select caten as category, titleen as title from pages where pshow = 1 group by caten ASC
收到此错误:
SELECT列表的表达式#2不在GROUP BY子句中,并且包含非聚合列'mytable.pages.titleen',它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by
不兼容
如何修复错误?无法更改sql_mode。
答案 0 :(得分:2)
我不确定,你到底想要实现什么,但你需要纠正
GROUP BY caten ASC
到
GROUP BY caten ORDER BY caten ASC
注意: ASC
(升序)是指特定列的值的顺序。那应该是ORDER BY
条款。
答案 1 :(得分:0)
如果你真的想只在caten
上进行分组,那么你的查询应该是。
SELECT caten AS category FROM pages
WHERE pshow = 1
GROUP BY caten
ORDER BY caten ASC;
或至少使用GROUP_CONCAT function汇总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;