没有GROUP BY子句时,SQL计数返回错误

时间:2012-03-22 02:49:59

标签: php mysql sql group-by mysql-error-1140

为什么我在我的实时服务器上遇到此查询的错误,而不是我的wamp localhost?

SELECT 
type as type, 
COUNT(*) AS total

FROM page AS p
WHERE p.parent_id = p.page_id

错误信息是,

  

SQLSTATE [42000]:语法错误或访问冲突:1140混合   GROUP列(MIN(),MAX(),COUNT(),...)没有GROUP列   如果没有GROUP BY子句,则非法

我怎样才能解决这个问题?

我的localhost返回这个我需要的结果,

type    total
page    16

1 个答案:

答案 0 :(得分:15)

使用聚合函数(例如COUNT)时,需要包含GROUP BY子句。

SELECT 
    type as type, 
    COUNT(*) AS total
FROM page AS p
WHERE p.parent_id = p.page_id
GROUP BY type

至于为什么这在本地工作,而不是在你的实时服务器上; MySql doesn't require complete listing of non-aggregate columns in the GROUP BY clause by default,但您的实时服务器可能已启用ONLY_FULL_GROUP_BY选项。