请帮我处理这个 SQL 查询;当我使用GROUP BY
子句时,我从 Mysql 收到此错误:
这与 sql_mode=only_full_group_by 不兼容
我想要列上的不同值:B.shopname。
SELECT
A.id,
COUNT(A.id),
A.idShop,
B.shopname
FROM
A
INNER JOIN
B ON A.idShop = B.id
GROUP BY
B.shopname
列GROUP BY
与列不兼容SELECT
。为什么?该查询正在尝试SELECT
三个未聚合的列A.id
、A.idShop
和B.shopname
。但是,GROUP BY
仅包括其中之一。
一般建议是将所有未聚合的列添加到GROUP BY
:
SELECT A.id, COUNT(A.id), A.idShop, B.shopname
FROM A INNER JOIN
B
ON A.idShop = B.id
GROUP BY A.id, A.idShop, B.shopname;
但我不认为这会做你想要的。我猜这COUNT()
将永远是1
。我怀疑你想要:
SELECT B.idShop, B.shopname, COUNT(*)
FROM A INNER JOIN
B
ON A.idShop = B.id
GROUP BY B.id, B.shopname;
笔记:
A.id
已经不在了SELECT
。这是不合适的,因为您想计算这些值。A.id
是永远的NULL
,所以计算NULL
列的非值只会使查询混乱。 COUNT(*)
更清晰(尽管有些人更喜欢COUNT(1)
)。GROUP BY
所有键都来自同一个表,因为它为优化器提供了更多选项。