SQL 使用 Minus/Not 的查询存在
SQL Query Using Minus/Not Exists
我要查询这条语句:
Drinkers who do not frequent the bar Henrys
现在,我知道我不能使用像这样的简单查询:
SELECT dinker
FROM frequents
WHERE bar <> 'Henrys';
因为如果一个人去 Henry's 酒吧并且还经常光顾其他酒吧怎么办?此人仍将包含在结果中。此查询仅过滤掉只经常光顾亨利酒吧的人。
我尝试使用 MINUS 运算符,但在 MySQL 中它似乎不支持查询:
SELECT drinker
FROM frequents
MINUS
SELECT drinker
FROM frequents
Where bar = 'Henrys';
我想尝试使用 NOT EXISTS 重写它,但似乎无法让它工作或正确思考逻辑。
select drinker
from frequents f
where not exists (select 1
from frequents x
where x.drinker = f.drinker
and x.bar = 'Henrys');
找到所有去亨利酒吧的饮酒者然后选择不属于该数组的饮酒者的效果
SELECT drinker
FROM frequents
WHERE drinker NOT IN (SELECT drinker FROM frequents WHERE bar = 'Henrys')
我要查询这条语句:
Drinkers who do not frequent the bar Henrys
现在,我知道我不能使用像这样的简单查询:
SELECT dinker
FROM frequents
WHERE bar <> 'Henrys';
因为如果一个人去 Henry's 酒吧并且还经常光顾其他酒吧怎么办?此人仍将包含在结果中。此查询仅过滤掉只经常光顾亨利酒吧的人。
我尝试使用 MINUS 运算符,但在 MySQL 中它似乎不支持查询:
SELECT drinker
FROM frequents
MINUS
SELECT drinker
FROM frequents
Where bar = 'Henrys';
我想尝试使用 NOT EXISTS 重写它,但似乎无法让它工作或正确思考逻辑。
select drinker
from frequents f
where not exists (select 1
from frequents x
where x.drinker = f.drinker
and x.bar = 'Henrys');
找到所有去亨利酒吧的饮酒者然后选择不属于该数组的饮酒者的效果
SELECT drinker
FROM frequents
WHERE drinker NOT IN (SELECT drinker FROM frequents WHERE bar = 'Henrys')