2015-09-12 98 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')