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 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/

10-11 03:18
查看更多