我们有一个这样的表
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中完成
答案 0 :(得分:1)
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
的所有行