我想要每个组中的最后一行(Group By user_id)。
表的结构如下:
表: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
表:用户
id | username
现在我需要来自用户表的用户名,我想要来自user_messages的其他详细信息。
现在我想要user_id 5 的数据,并且只想要它的最后一行。 同样对于我想要每组的最后一行的其他组,以及用户表,我希望用户名加入表格。
如果可以,请帮我解决这个问题。谢谢。
答案 0 :(得分:1)
您可以尝试这样的事情:
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和用户名,但您可以从这些表中获得您想要的任何信息。