MySQL 5.7 查询,分组依据错误


select caten as category, titleen as title from pages where pshow = 1 group by caten ASC

收到此错误:

SELECT list 的表达式 #2 不在 GROUP BY 子句中,并且包含非聚合列 'mytable.pages.titleen',该列在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容

如何修复错误?无法更改sql_mode。

我不确定,你到底想实现什么,但你需要纠正

GROUP BY caten ASC

GROUP BY caten ORDER BY caten ASC

注意:ASC(升序(是指特定列的值顺序。紧随其后的是ORDER BY条款。

如果你真的想只按caten做一个组,那么你的查询应该是。

SELECT caten AS category FROM pages 
WHERE pshow = 1
GROUP BY caten 
ORDER BY caten  ASC;

或者至少使用GROUP_CONCAT函数聚合titleen的所有值,用于每个不同的caten值。

SELECT caten AS category, GROUP_CONCAT(DISTINCT titleen ORDER BY titleen ASC SEPARATOR ',')
AS titles FROM pages 
WHERE pshow = 1
GROUP BY caten 
ORDER BY caten  ASC;

但是,如果您确实需要在没有串联的情况下获取titleen,那么您应该将其添加到 group by 子句中。

SELECT caten AS category, titleen AS titles FROM pages 
WHERE pshow = 1
GROUP BY caten, titleen 
ORDER BY caten  ASC;

最新更新