我有个问题,
我想分组我的表,并只显示最大两个值(如字母硬),为每个领域。
表名= table1
MySQL数据库
例如:

评分:
aa@aa.com
bb@aa.com
aa@example.com
cc@example.com
a@domain.com
如您所见,查询应按域分组,并仅显示每个域的MAX两个记录。
你能帮帮我吗?
发布于 2018-10-24 11:24:28
在MySQL 8.0.2及以上中,这个问题可以以较少冗长的方式使用窗口函数来解决。
对于您的MySQL版本5.1.73,我们可以使用会话变量进行仿真。
SELECT
dt2.Email,
dt2.Domain
FROM
(
SELECT
@row_num := IF(@dmn <> dt1.Domain, 1, @row_num + 1) AS row_no,
@dmn := dt1.Domain AS Domain,
dt1.Email
FROM
(
SELECT
Email,
Domain
FROM Table1
ORDER BY Domain
) AS dt1
CROSS JOIN (SELECT @row_num := 0,
@dmn := '') AS user_init_vars
) AS dt2
WHERE dt2.row_no <= 2
ORDER BY dt2.Domain 您可以按照本教程来了解这种方法的基本原理:编号/
https://stackoverflow.com/questions/52967501
复制相似问题