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

标签 mysql laravel eloquent

我想要每个组中的最后一行(按 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/

相关文章:

mysql - Room 从生成的查询中返回错误的初始化对象

php - 使用单个数组传递多个 WHERE 条件(使用 LIKE)

php - 如何连接具有不同关系的多个表并在 Laravel 5.3 中使用 attach()

php - 使用空间分析功能和数据类型在 MySQL 中按距离排序

php - Laravel:使用 Eloquent ORM 的 N 到 N (mysql) 关系

Mysql 查询选择 2 个值和 1 个不同的值

mysql - 创建一个查询以获得两个相同的结果

php - 强制记录所有页面进程和结果

php - 如何解决 Laravel 中的数据更新错误

php - Laravel 4使用eloquent创建记录时无法保存created_at字段