使用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’;