查询 SQL 中的 2 个表

Querying 2 Tables In SQL

我正在尝试查询此语句:

 Drinkers who frequent all bars

现在我有一个名为 bars 的 table,其中有一列包含每个 bar 的名称。

我还有一个 table 常客,上面有饮酒者的姓名以及他们常去的酒吧。

通过一个查询,我能够使用计数运算符从条 table 中找到不同条的数量:

SELECT COUNT(DISTINCT name) AS num_bars 
FROM bars;

答案是 18。

通过单独的查询,我可以检查常客 table,看看哪个饮酒者常去总共 18 个酒吧:

SELECT drinker
FROM frequents
GROUP BY drinker
HAVING COUNT(drinker) = 18;

首先,我不确定如何将这 2 个查询合并为一个(连接过程让我有点困惑)。其次,我不确定我的逻辑是否完全正确。如果一个饮酒者常去的酒吧不在酒吧 table 中(这在我的数据集中没有发生)怎么办?那么我的两个查询系统就会失败。

您不需要 join(尽管您可以使用一个)。只需在 having 子句中使用子查询:

SELECT drinker
FROM frequents
GROUP BY drinker
HAVING COUNT(drinker) = (SELECT COUNT(DISTINCT name) FROM bars);