返回select mysql中前n%的记录

o7jaxewo  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(281)

这个问题在这里已经有答案了

将sql server查询转换为mysql[重复](1个答案)
为mysql中的数值选择top x(或bottom)percent(3个答案)
两年前关门了。
我需要返回选择中所有记录的33%

select id , amount, 'low'
from table 1 
where amount > 1
order by 2;

所以我要把这张唱片的前33%还给你

tktrz96b

tktrz96b1#

我认为您需要枚举行,除了最新版本的mysql之外,其他所有的行都需要变量:

select t.*
from (select t.*, (@rn := @rn + 1) as rn
      from (select id , amount, 'low' as col
            from table 1 
            where amount > 1
            order by 2
           ) t cross join
           (select @rn := 0) params
     ) t
where rn <= 0.33 * @rn;  -- @rn is now set to the total number of rows

相关问题