我有一个表,其中重要的列如下所示:
username
source
description
我的目标是获取用户/源组合唯一的 10 条最新记录。从以下数据来看:
1 katie facebook loved it!
2 katie facebook it could have been better.
3 tom twitter less then 140
4 katie twitter Wowzers!
该查询应返回记录 2,3 和 4(假设较高的 ID 较新 - 实际表使用时间戳列)。
我当前的解决方案“有效”,但需要 1 个选择来生成 10 条记录,然后需要 1 个选择来获取每行的正确描述(因此 11 个选择来生成 10 条记录)...我必须想象有更好的方法。该解决方案是:
SELECT max(id) as MAX_ID, username, source, topic
FROM events
GROUP BY source, username
ORDER BY MAX_ID desc;
它返回正确的 ID,但返回错误的描述,以便我可以通过记录 ID 选择正确的描述。
未经测试,但您应该能够使用join
:
SELECT
fullEvent.id,
fullEvent.username,
fullEvent.source,
fullEvent.topic
FROM
events fullEvent JOIN
(
SELECT max(id) as MAX_ID, username, source
FROM events
GROUP BY source, username
) maxEvent ON maxEvent.MAX_ID = fullEvent.id
ORDER BY fullEvent.id desc;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)