【发布时间】:2019-08-17 16:37:13
【问题描述】:
我正在尝试从 MySQL 数据库中提取 5 个最近的记录,然后按 USER 将它们分组在一起,然后在分组后获取更多记录,直到我有 5 个按日期排序的唯一 USER。理想情况下,我想用一个查询来做到这一点。
数据库:
------------- |用户 |项目 | ------------- | 1 |啊! | 3 | bbb | | 1 |抄送 | | 2 | dd | | 3 | iii | | 4 | eee | | 6 | ff | | 5 | ggg | | 1 |呵呵 | -------------现在,我有这个查询:
SELECT user,GROUP_CONCAT(item)
FROM database
GROUP BY user
ORDER BY date DESC
LIMIT 5
但这给了我 5 条独特的记录,其中包含每个唯一用户的所有项目,如下所示:
-------------------- |用户 |项目 | -------------------- | 1 | aaa,ccc,hhh | | 3 | bbb,iii | | 2 | dd | | 4 | eee | | 6 | ff | --------------------在前面的示例中,用户 1 不应该有项目“hhh”,因为在该记录之前有 5 个唯一用户的 7 条记录。相反,我希望它提取前 5 条记录(以 USER 3 iii 结尾),然后将用户 1 和用户 3 重复记录分组,然后再获取两条记录以达到 LIMIT 5,如下所示:
-------------------- |用户 |项目 | -------------------- | 1 | aaa,ccc | | 3 | bbb,iii | | 2 | dd | | 4 | eee | | 6 | ff | --------------------这是否可以通过单个查询来完成,这样我就不必提取记录、合并然后提取更多记录?
【问题讨论】:
-
在什么意义上一个记录“先于”另一个记录?见meta.stackoverflow.com/questions/333952/…
-
数据集中没有日期
标签: mysql sql group-concat