【发布时间】:2020-09-08 13:32:13
【问题描述】:
我有以下 sql 查询:
SELECT chat.*, user.vorname AS vorname, user.images AS userImage, nachrichten.ID as lastMessageID FROM `chat`
LEFT JOIN `user` ON chat.userID = user.ID
LEFT JOIN `nachrichten` ON chat.chatToken = nachrichten.chatToken
WHERE chat.userID != 1 AND chat.chatToken = chat.chatToken
ORDER BY nachrichten.ID DESC
输出:
现在我想按用户 ID 对结果进行分组:
SELECT chat.*, user.vorname AS vorname, user.images AS userImage, nachrichten.ID as lastMessageID FROM `chat`
LEFT JOIN `user` ON chat.userID = user.ID
LEFT JOIN `nachrichten` ON chat.chatToken = nachrichten.chatToken
WHERE chat.userID != 1 AND chat.chatToken = chat.chatToken
GROUP BY chat.userID
ORDER BY nachrichten.ID DESC
结果:
但我得到最低的“lastMessageID” - 我想得到最高的 ID
丹尼斯 -> 97(而不是 90)
我的错在哪里?
【问题讨论】:
-
请阅读meta.stackoverflow.com/questions/333952/…并添加数据的来源
-
尝试:SELECT ....., MAX(lastMessageID) ........
-
@BerndBuffen:就是这样!谢谢:)
-
请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图像中包含图例/键和说明。请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask
标签: mysql sql join group-by greatest-n-per-group