mysql 5.7查询错误分组

时间:2018-01-22 12:22:58

标签: mysql group-by sql-mode

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。

2 个答案:

答案 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;