对于MySQL专家来说,这将是一个简单的。
我有一张包含歌曲(歌曲)的表格:
id, song_name
另一个带标签(标签):
id, tag_name
我有一个交联表(tagXsong):
id, song_id, tag_id
我需要一个单一的查询来返回所有歌曲(来自歌曲表),这些歌曲匹配标签列表中的所有标签(作为ID的连接列表提供,例如(57,58,60) ,63)。
换句话说,我想检索标签ID列表中包含所有标签的歌曲。
多么羞耻地要求这个!
答案 0 :(得分:1)
SELECT s.id,s.song_name FROM song s, tagXsong x
WHERE s.id=x.song_id AND x.tag_id IN (57,58,60,63)
GROUP BY 1,2 HAVING COUNT(*)=4
这将为您提供所有与其链接的四个(57,58,60,63)tag_id的歌曲。