需要帮助向MySQL搜索查询添加过滤器

时间:2013-10-27 23:02:16

标签: mysql

好的,我可以说我有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相关联的媒体,该怎么办。

我的问题是如何检索包含68两种语言链接的媒体列表。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我相信这就是你想要的。

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'
)
相关问题