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