请帮我处理这个 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
答案 0 :(得分:0)
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
键都来自同一个表,因为它为优化器提供了更多选项。