好吧,可以说我有3张桌子...
一个称为media
,每行的主索引为media_id
。
一个称为keywords
,每行的主索引为keyword_id
。
最后,我还有一个名为keylinks
的表。没有主索引,但是有唯一的索引media_id + keyword_id
。您可能会猜到该表是链接到媒体的关键字的索引。这个想法是可以将关键字链接到多个媒体,以便用户可以根据链接到的关键字来浏览媒体。
现在,我正在执行以下操作以获取链接到6
的keyword_id的媒体:
SELECT media.*, keywords.*
FROM media
LEFT JOIN keylinks ON (keylinks.media_id = media.media_id)
LEFT JOIN keywords ON (keywords.keyword_id = keylinks.keyword_id)
WHERE keywords.keyword_id = '6'
如果我只想返回由
6
链接的结果,则效果很好。但是,如果我想查找不仅链接到6
的keyword_id,而且链接到第二个(或第三个,等等)keyword_id
的媒体,该怎么办。我的问题是我该如何检索具有指向
6
以及可能8
的键链接的媒体列表。提前致谢。
最佳答案
我相信这就是您想要的。
SELECT *
FROM media
WHERE media_id IN (
SELECT media_id FROM keylinks WHERE keyword_id = '6'
) AND media_id IN (
SELECT media_id FROM keylinks WHERE keyword_id = '8'
)
关于mysql - 需要帮助将过滤器添加到MySQL搜索查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19624706/