mysql - 每个组子集的最大行数

标签 mysql sql greatest-n-per-group

我有一个这样的查询:

SELECT * FROM user AS u 
JOIN article AS a
ON u.id = a.userid
GROUP BY u.id

如何为每个特定用户提取最多 10 篇文章?

最佳答案

Mysql 没有针对此类结果的窗口函数,另一种解决方法是使用用户定义的变量来获取每组的 n 个结果

SELECT * FROM (
SELECT a.*,
@r:= CASE WHEN @g = userid THEN @r + 1 ELSE 1 END row_num,
@g:= userid
FROM (SELECT * 
FROM `user` AS u 
JOIN article AS a
ON u.id = a.userid
ORDER BY u.id,a.id DESC
) a
CROSS JOIN (SELECT @g:=NULL,@r:0) b
) t
WHERE row_num <=10

关于mysql - 每个组子集的最大行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128769/

相关文章:

sql - 用GROUP BY之后的号码查询

sql - 使用 cloud-spanner 进行本地开发

php - 获取组/线程/主题的 N 行

php - 关于SQL注入(inject)中set id=1 and password = ' '

mysql - 此准备好的Update SQL查询中的错误在哪里?

sql - 如何在 postgres 数据库中只获取具有最大 version_id 的行而没有昂贵的子查询?

mysql - 根据相关性查找数据,然后从不同域中获取 2 个结果

mysql - 选择最大数量行

php - 如何处理用户可定制的网站主题?

mysql - 按两列排序不起作用