2015-09-12 64 views
0

我要查询的语句:SQL查询使用减号/ NOT EXISTS

Drinkers who do not frequent the bar Henrys 

现在,我知道我不能用这样一个简单的查询:

​​

,因为如果一个人去了什么亨利酒吧,也经常其他酒吧以及?此人仍将被包含在结果中。这个查询只会筛选出只有频繁使用Henrys bar的人,而没有其他人。

我试图用减号来,但在MySQL中它似乎并不支持查询:

SELECT drinker 
FROM frequents 
MINUS 
SELECT drinker 
FROM frequents 
Where bar = 'Henrys'; 

我想尝试重写这个使用NOT EXISTS,但似乎无法得到它工作或正确地思考逻辑。

回答

2
select drinker 
    from frequents f 
where not exists (select 1 
      from frequents x 
     where x.drinker = f.drinker 
      and x.bar = 'Henrys'); 
+0

你能解释一部分的饮酒者的影响是什么“选择1”不? – Bret

+0

'exists'或'not exists'条件测试子查询是否返回行。因此,您可以将任何内容放入选择列表中。它不会改变子查询是否会返回行,所以它作为存在或不存在子查询的使用不受影响。选择'x'或'鱼'或'狗'也可以。 –

2

某事发现所有参加的亨利酒吧饮酒者,然后选择不在该数组

SELECT drinker 
FROM frequents 
WHERE drinker NOT IN (SELECT drinker FROM frequents WHERE bar = 'Henrys')