查询 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);
我正在尝试查询此语句:
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);