0

好吧,假设我有 3 张桌子......

一个叫做media,每一行都有一个主索引media_id

一个叫做keywords,每一行都有一个主索引keyword_id

最后,我还有一张名为keylinks. 没有主索引,但有一个唯一索引media_id + keyword_id。您可能会猜到该表是与媒体相关的关键字的索引。这个想法是关键字可以链接到多个媒体,以便用户可以根据他们链接的关键字浏览媒体。

现在,我正在执行以下操作来获取链接到的 keyword_id 的媒体6

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. 但是,如果我想查找不仅与关键字 ID 相关联的媒体,6而且还与第二个(或第三个等)相关联keyword_id

我的问题是如何检索具有两个6和可能的键链接的媒体列表8

提前致谢。

4

1 回答 1

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'
)
于 2013-10-27T23:13:55.117 回答