我有这样的查询
SELECT * FROM `message` WHERE sender = 10
ORDER BY `message`.`date` AND `message`.`topic` ASC
该查询显示每条消息。我只想选择最早日期的特定主题的第一行。
有什么办法可以通过sql方式解决此问题吗?
如果您只想显示最早的日期,而在此行中没有其他信息,则可以非常简洁地完成:
SELECT topic, MIN(date)
FROM message
WHERE sender = ?
GROUP BY topic;
如果要显示整个行,则需要更多详细信息。此示例假定(sender,topic,date)是唯一的,如果不是,则需要做一些额外的工作来消除重复项。
WITH minDate AS
(
SELECT sender, topic, MIN(date) AS date
FROM message
GROUP BY sender, topic;
)
SELECT m.*
FROM message m
JOIN minDate d ON m.topic = d.topic AND m.date = d.date AND d.sender = m.sender
WHERE sender = ?;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句