2013-08-20 136 views
1

我不確定這個問題的標題,所以如果標題有誤導性,我很抱歉。基於其他值SQL選擇值?

我有一個表中的兩列MovieIDFormat(我有更多,但這些都是我正在專注於那些

有兩種類型的值在「格式」列:「DVD」和'Blu-ray'。我想選擇只有DVD格式的電影。請注意,有多部電影具有藍光和DVD格式,我不想顯示這些值。請參閱下面的小提琴示例我的數據的。謝謝!!!

http://sqlfiddle.com/#!2

MovieID | Format 
----------------- 
1000 DVD 
1000 DVD 
1000 Blu-ray 
1001 DVD 
1001 DVD 
1002 DVD 
1003 DVD 
1003 Blu-ray 
1004 DVD 

我要輸出

MovieID 
------------ 
1001  
1002  
1004  
+0

到SQLFiddle的鏈接不起作用:( – dasblinkenlight

+1

你已經改變了這個問題,以至於當前的答案不再有意義,最好是寫一個新的而不是替換舊的。 – xwoker

+0

如果你有新的問題,請把它作爲一個新的問題。刪除以前接受的答案,然後從頭重寫原來的問題只是破壞行爲,並導致很多混亂(我剛剛得到通知,我失去代表我接受的答案被刪除)。 –

回答

2

一種直接的方式來完成,這是如下:

SELECT DISTINCT (MovieID) 
FROM Movies m 
WHERE Format='DVD' 
AND NOT EXISTS (
    SELECT * FROM Movies mm WHERE mm.MovieID=m.MovieID AND mm.Format='Blu-ray' 
) 

這是相當多的問題,以SQL語法的英文描述翻譯。

1
select MovieID 
from Table 
where Format = 'DVD' 
    and MovieID not in (select MovieID from Table where Format <> 'DVD') 

不要擔心,如果它似乎效率不高,如果你有正確的索引良好的數據庫管理系統將優化成高效的代碼這一點。