gpt4 book ai didi

mysql - SQL:每个饮酒者经常光顾的酒吧(使用 NOT EXISTS)

转载 作者:行者123 更新时间:2023-11-29 04:36:40 24 4
gpt4 key购买 nike

我正在尝试学习如何正确使用 NOT EXISTS 及其背后的逻辑。我有这个查询:

Bars which every drinker frequents

连同这个频率表:

enter image description here

只看表,我知道 Blue Angel 应该是结果。我从这样的事情开始(这没有给我我想要的):

SELECT f.bar 
FROM frequents f
WHERE NOT EXISTS(
SELECT ff.drinker
FROM frequents ff
WHERE f.drinker <> ff.drinker
AND f.bar = ff.bar
);

因此,如果 f.bar 是“A.P. Stump's”,我必须检查表中的每个其他名称是否也经常出现“A.P. Stump's”。我似乎不知道该怎么做。

我需要做什么?请注意,我必须在查询中使用 NOT EXISTS

最佳答案

我会使用 group byhaving 来做到这一点:

select bar
from frequents b
group by bar
having count(*) = (select count(distinct drinker) from frequents);

此查询仅计算每个酒吧中饮酒者的数量。如果计数与饮酒者总数相匹配,则“酒吧”通过并在结果集中。

这假设 frequents 表没有关于 bar/drinker 的重复行。如果是这样,请使用 count(distinct drinker) 而不是 count(*)

虽然这可以表述为一个NOT EXISTS 查询(实际上,两个NOT EXISTS 将在查询中),但我发现实际上这样做没有用.如果您正在学习 SQL,嵌套的 NOT EXISTS 是一个有趣的思维练习。聚合更加灵活,可以回答更广泛的问题(例如,大多数饮酒者经常光顾多少家酒吧)。

关于mysql - SQL:每个饮酒者经常光顾的酒吧(使用 NOT EXISTS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39681802/

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