2010-05-11 72 views
2

我在我的MySQL數據庫中設置了我的歌曲。檢查MySQL數據庫數據是否不存在

每首歌都被分配了多個位置或根本沒有位置。

只有歌曲,要麼沒有在數據庫中指定的位置或有分配給以下中指定的位置應該從數據庫中拉出。

希望,當你瞭解它下面我查詢纔有意義

SELECT s.* FROM roster_songs AS s 
    LEFT JOIN roster_songs_locations AS sl ON sl.song_id = s.id 
    WHERE EXISTS (
     SELECT sl2.* FROM roster_songs_locations AS sl2 WHERE s.id != sl2.song_id 
    ) OR ( 
     sl.location_id = '88fb5f94-aaa6-102c-a4fa-1f05bca0eec6' 
     OR 
     sl.location_id = '930555b0-a251-102c-a245-1559817ce81a' 
    ) 
    GROUP BY s.id 

查詢工作差不多,除了它拿出分配給未在上述查詢中指定sl.location_id的數據庫歌曲。我認爲這與我的EXISTS代碼撿起來有關...

任何想法,我可以得到這個工作?

回答

1

如果沒有與相關聯的位置,sl.location_idnull,所以只需添加到您的WHERE

SELECT s.* FROM roster_songs AS s 
LEFT JOIN roster_songs_locations AS sl ON sl.song_id = s.id 
WHERE 
    sl.location_id = NULL 
    OR 
    sl.location_id = '88fb5f94-aaa6-102c-a4fa-1f05bca0eec6' 
    OR 
    sl.location_id = '930555b0-a251-102c-a245-1559817ce81a' 
) 
GROUP BY s.id 
+0

這是正確的答案。 – ceteras 2010-05-11 14:03:53

相關問題