MYSQL仅从同一个类别中选择X行

时间:2013-11-25 19:38:28

标签: mysql

我们有一个这样的表

ip, class
192.168.1.1, 192.168.1
192.168.1.3, 192.168.1
12.34.56.78, 12.34.56
12.34.56.11, 12.34.56
12.34.56.16, 12.34.56
...
...

我们需要一个查询来从查询中的同一个类中仅选择X ips。例如,我们需要从同一个类中选择所有ips但最多2个ips。

我们尝试使用临时表,但我们没有运气。我们需要它才能从mysql中完成

1 个答案:

答案 0 :(得分:1)

遗憾的是,在mysql中没有简单的方法

select ip, class 
from (
    select ip, class,
          @num := if(@grp = class, @num + 1, 1) as row_number,
          @grp := class
    from mytable, (select @num := 0, @grp := '') temp_vars
    order by class) x
where row_number <= 2

这将创建每个组具有模拟row_number的临时表,并选择&lt; = 2

的所有行