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;