MySQL:按连接表的最大日期排序

标签 mysql sql subquery sql-order-by

我有两张 table - groupsmessages

<小时/>

消息具有以下字段 group_iddate_created 。因此,可以将大量消息添加到单个组中。我想从表中选择所有组 - 最相关的在顶部,即按最新消息日期排序。我尝试过这样的事情

SELECT g.*, MAX(m.date_created) AS mdt FROM groups g
LEFT JOIN messages m ON g.id = m.group_id
ORDER BY mdt DESC;

但是此查询仅返回整个表中的一行和最大消息日期。

最佳答案

您缺少分组依据:

SELECT g.*, MAX(m.date_created) AS mdt
FROM groups g LEFT JOIN
     messages m
     ON g.id = m.group_id
GROUP BY g.id
ORDER BY mdt DESC;

关于MySQL:按连接表的最大日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51422346/

相关文章:

sql - 在子查询 PostgreSQL 之前更改 GUC 参数

oracle - 在子查询 (Oracle) 中引用父查询列

mysql - 将相关 mysql 子查询转换为非相关

php - 将文本区域保存到 MySQL 并保留换行符

php - 无法让此搜索表单按照我想要的方式工作

mysql - PDO异常 : SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

php - 如何使用 PHP 在不同的数据库中创建 MySQL 表结构

sql - 从 MS-SQL Server 2008 中的 XML 字段中提取值

mysql - Sql Query 用于提取嵌入 php 的数据

MySQL if/条件查询?