代码之家  ›  专栏  ›  技术社区  ›  Andrey

返回select mysql中的前n%记录[重复]

  •  1
  • Andrey  · 技术社区  · 6 年前

    我需要返回select中所有记录的33%

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

    所以我需要把前33%的记录

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gordon Linoff    6 年前

    我认为您需要枚举行,除了最新版本的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