MYSQL 仅选择同一类别中的 X 行

标签 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 个 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/

相关文章:

mysql - 自动生成表并按名称分组值并获取多个值

mysql - 使用 MySQL 选择除当前视频之外的类似视频

java - 使用什么方法转义所有可转义字符

php - Laravel 5.4 中按用户计数记录

在 Netbeans 中连接 azure 数据库的 Java 程序出现错误

php - 在选择标签内循环并回显所选值

php - MySQL - 存储时间并与日期进行比较

Mysql子查询正确选择列

mysql - sql子查询如何获取想要的值

mysql - 如何从表中选择最新行