请帮我处理这个 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所有键都来自同一个表,因为它为优化器提供了更多选项。