如何解决SQL 查询 GROUP BY 子句中的错误; sql_mode=only_full_group_by
请帮我处理这个 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,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
键都来自同一个表,因为它为优化器提供了更多选项。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。