使用NOT IN排除結果 你可以使用NOT IN關鍵字來獲得明確地不被包含在另一個結果組中的結果。例如,我想要通過下面的代碼來返回Metallica在“And Justice for All”專輯中不包含單詞“justice”的歌曲:
SELECT song_name FROM Album WHERE album_name = ‘And Justice for All’ AND band_name = ‘Metallica’ AND song_name NOT IN (SELECT song_name FROM Lyric WHERE song_lyric LIKE ‘%justice%’);
在前面的SQL代碼中,我選擇了Metallica的“And Justice for All,”專輯中的所有歌曲,接著是帶有歌詞中帶有“justice”所有歌曲,最后從在Lyric結果組中沒有出現的Album結果組返回了所有歌曲。較之于返回兩個查詢并使用代碼來比較數組,你通過一個單獨的聲明就可以得到確切的結果。
SELECT Album.song_name FROM Album WHERE Album.band_name = ‘Metallica’ AND EXISTS (SELECT Cover.song_name FROM Cover WHERE Cover.band_name = ‘Damage, Inc.’ AND Cover.song_name = Album.song_name);
SELECT AlbumInfo.album_name FROM AlbumInfo WHERE AlbumInfo.band_name = ‘Metallica’ AND album_tracks <> (SELECT COUNT(*) FROM Album WHERE Album.album_name = AlbumInfo.album_name);
SELECT AlbumInfo.album_name, album_tracks, (SELECT COUNT(*) FROM Album WHERE Album.album_name = AlbumInfo.album_name) FROM AlbumInfo WHERE AlbumInfo.band_name = ‘Metallica’;