检查MySQL数据库数据是否不存在

检查MySQL数据库数据是否不存在

问题描述:

我在我的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代码捡起来有关...

任何想法,我可以得到这个工作?

如果没有与相关联的位置,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