This question already has answers here:
SELECT list is not in GROUP BY clause and contains nonaggregated column … incompatible with sql_mode=only_full_group_by
(13个回答)
4个月前关闭。
我正在尝试建立一个查询,该查询返回来自两个联接表的最新消息。但是我在分组依据上遇到了错误。也许我完全错误地对待了它。
我知道在我当前的实现中,我会得到一个列表,而不是最新列表,但是我至少想在开始时看到最新列表
这是错误:
SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列'tawkifydb.dm.message',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by不兼容
更新:我认为DESC也不应位于GROUP BY中,因此添加了ORDER BY
(13个回答)
4个月前关闭。
我正在尝试建立一个查询,该查询返回来自两个联接表的最新消息。但是我在分组依据上遇到了错误。也许我完全错误地对待了它。
我知道在我当前的实现中,我会得到一个列表,而不是最新列表,但是我至少想在开始时看到最新列表
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子句中,并且包含未聚合的列'tawkifydb.dm.message',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by不兼容
最佳答案
SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列'tawkifydb.dm.message',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by不兼容
SELECT中的每一列都应在GROUP BY中(或使用汇总)。该错误表明SELECT中有m.message,但GROUP BY中没有(不是聚集)
您需要这样的东西:
GROUP BY m.created_at, m.message
ORDER BY m.created_at DESC;
更新:我认为DESC也不应位于GROUP BY中,因此添加了ORDER BY
关于mysql - 当我尝试在sequel pro中运行此查询时遇到错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58142291/