我们有一个这样的表
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 个 ip。例如,我们需要选择所有 ip,但最多 2 个来自同一类的 ip。
我们尝试使用临时表,但没有任何运气。我们需要它能够仅从 mysql 完成
最佳答案
不幸的是,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 的临时表,并选择具有 <= 2 的所有行
关于MYSQL 仅选择同一类别中的 X 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20201727/