3

为什么我的实时服务器上的这个查询出错,但我的 wamp localhost 上却没有?

SELECT 
type as type, 
COUNT(*) AS total

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

错误信息是,

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

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

我的本地主机返回这个结果,这是我需要的,

type    total
page    16
4

1 回答 1

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 不需要GROUP BY子句中非聚合列的完整列表,但您的实时服务器可能已ONLY_FULL_GROUP_BY打开该选项。

于 2012-03-22T02:52:10.560 回答