我想要每个组中的最后一行(按 user_id 分组)。
表的结构如下:
Table: user_messages
id(PK) | user_id(FK) | read_admin_status | created_at
1 5 0 date
2 5 0 date
3 5 0 date
4 5 1 date
5 6 1 date
6 6 1 date
7 7 0 date
8 7 0 date
Table: users
id | username
现在我想要来自用户表的用户名,并且想要来自 user_messages 的其他详细信息。
现在我想要 user_id 5 的数据并且只想要它的最后一行。 同样,对于其他组,我想要每个组的最后一行,并且从用户表中,我想要通过加入表来用户名。
如果可以的话请帮我解决这个问题。谢谢。
最佳答案
你可以尝试这样的事情:
SELECT user_messages.id, users.username
FROM (
SELECT MAX(id) AS max_id
FROM user_messages
GROUP BY user_id
) AS ids
INNER JOIN user_messages ON ids.max_id = user_messages.id
INNER JOIN users ON user_messages.user_id = users.id
该查询会选择每个用户的消息组中最大的消息ID,这与按ID排序时获取最后一个ID相同,然后使用关联的用户ID来获取用户名。我只选择了消息 ID 和用户名,但您可以从这些表中获取您想要的任何信息。
关于mysql - 获取每组中的最后一行并按 ID(pk) DESC 对整个数组进行排序并与其他表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38016514/