【问题标题】:Limit by percentage of all rows in MySQLMySQL 中所有行的百分比限制
【发布时间】:2014-02-03 16:26:24
【问题描述】:

如何限制 MySQL 中所有行的百分比?

我正在尝试这个:

SELECT * FROM table_name
ORDER BY column_name ASC
LIMIT (SELECT ROUND(COUNT(id)*0.25) FROM table_name)

我也尝试将查询 SELECT ROUND(COUNT(id)*0.25) FROM table_name 保存到变量,但这是同样的问题。我知道 LIMIT 只需要数字,但我不知道表中有多少行来为 LIMIT 提供特定数字。如果使用 LIMIT 不可能,如何在没有 LIMIT 的情况下执行此操作?

我只需要选择表中所有行的前 25%。

【问题讨论】:

标签: mysql


【解决方案1】:

您可以使用此代码:

SELECT*
FROM    (
    SELECT list.*, @counter := @counter +1 AS counter
    FROM (select @counter:=0) AS initvar, list
    ORDER BY value DESC   
) AS X
where counter <= (10/100 * @counter);
ORDER BY value DESC

引用this重复的问题

【讨论】:

  • 考虑到很多更好的方法来实现这一点,上面的查询效率非常低,就像 Vignesh 的评论中提到的那样
  • 这是从接受的答案复制粘贴到 Vignesh 链接的重复问题。
  • 谢谢。它有效,但我需要稍微更改此代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
相关资源
最近更新 更多