获取每个组中的最后一行,并按ID(pk)DESC对整个数组进行排序,并与其他表连接

时间:2016-06-24 15:05:13

标签: mysql laravel eloquent

我想要每个组中的最后一行(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 的数据,并且只想要它的最后一行。 同样对于我想要每组的最后一行的其他组,以及用户表,我希望用户名加入表格。

如果可以,请帮我解决这个问题。谢谢。

1 个答案:

答案 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和用户名,但您可以从这些表中获得您想要的任何信息。