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

lau*_*kok 3 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
Run Code Online (Sandbox Code Playgroud)

错误信息是,

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

我怎么能绕过这个?

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

type    total
page    16
Run Code Online (Sandbox Code Playgroud)

Mic*_*son 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
Run Code Online (Sandbox Code Playgroud)

至于为什么这在本地工作,而不是在你的实时服务器上; 默认情况下,MySql不要求在GROUP BY子句中完整列出非聚合列,但您的实时服务器可能已ONLY_FULL_GROUP_BY启用该选项.