【发布时间】:2020-01-28 05:41:32
【问题描述】:
我正在尝试构建一个查询,该查询返回来自两个连接表的最新消息。但是我在 group by 上遇到错误。也许我完全错误地接近它。
我知道在我当前的实现中我会得到一个列表,而不是最新的,但我至少想在开头看到最新的
SELECT m.message, m.created_at
FROM conversations c
JOIN messages m ON c.id = m.conversation_id
WHERE m.conversation_id = 5
GROUP BY m.created_at DESC;
这是错误: SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含在功能上不依赖于 GROUP BY 子句中的列的非聚合列“tawkifydb.dm.message”;这与 sql_mode=only_full_group_by 不兼容
【问题讨论】:
-
我不了解 MySQL,但在事务 SQL 中,DESC 进入 ORDER BY
-
错误信息是什么? (请为此编辑您的帖子)
-
@Julian 对不起!我添加了错误
-
您需要一个聚合函数 dev.mysql.com/doc/refman/8.0/en/group-by-functions.html 用于 m-message a 或 group by 。最后的Furtehr DESC是错误的,它属于order by
-
SELECT list is not in GROUP BY clause and contains nonaggregated column .... incompatible with sql_mode=only_full_group_by 的可能重复项您应该做的第一件事是对错误消息的相关部分进行基本搜索。我通过简单搜索 Expression #1 of SELECT list is not in GROUP BY 子句找到了重复项(以及许多其他项)。