gpt4 book ai didi

mysql - count 和 group by 的问题以获得 count 为 0 的内连接

转载 作者:行者123 更新时间:2023-11-29 23:30:25 28 4
gpt4 key购买 nike

我有以下查询:

SELECT s.username FROM `instagram_shop` s
INNER JOIN `instagram_shop_picture` p ON
s.id = p.shop_id
WHERE COUNT(p.id) = 0
GROUP BY p.id
;

我本质上是想找到所有还没有任何图片的商店。我想获取商店的用户名。但是上面的查询给了我#1111 - Invalid use of group function这是为什么?

这是 instagram_shop 的样子:

enter image description here

这是 instagram_shop_图片:

enter image description here

最佳答案

这里有两件事需要纠正。

HAVING 用于与聚合函数相关的条件

Where 是在使用 Count、Min、Max、Sum 等聚合数据之前应用的过滤器。

Having 在聚合完成后使用,并且仅在聚合函数上使用。

使用LEFT OUTER JOINEXISTS

当您使用内联接时,您将仅从 instagram_shop 和 instagram_shop_picture 获取行。要获取 instagram_shop_picture 中不存在的行,您可以使用 OUTER JOIN,或使用 EXISTS

SELECT s.username
FROM instagram_shop s
LEFT OUTER JOIN instagram_shop_picture p
ON s.id = p.shop_id
GROUP BY p.id
HAVING COUNT(p.id) = 0

或者

SELECT s.username
FROM instagram_shop s
Where Not Exists
(
Select 1
From instagram_shop_picture p
Where s.id = p.shop_id
)

关于mysql - count 和 group by 的问题以获得 count 为 0 的内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26631677/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com