我有两个表。
Resource:
md5 (PK), link, title
Tags:
md5 (FK), category
它是一对多的关系,一个资源可以有多个标签。 我希望能够提取具有两个标签的资源,例如包含标签“web”和“blog”的资源。如果我使用“OR”,它显然会返回仅包含“web”或仅包含“blog”的文档,但如果我使用 AND,即使我知道有包含这两个标签的资源,我也得不到任何结果
SELECT DISTINCT tags.MD5, Resource.Title, Resource.Link, tags.Category
FROM Resource
INNER JOIN tags ON Resource.MD5 = tags.MD5
WHERE
(tags.Category = @tag)
OR
(tags.Category = @tag2)
ORDER BY tags.MD5
最佳答案
你想这样做:
select t.MD5, r.Title, r.Link, t.Category
from Resource r inner join Tags t on r.MD5 = t.MD5
where exists (select category from Tags t1 where category = @tag and t1.MD5 = r.MD5)
and exists (select category from Tags t1 where category = @tag2 and t1.MD5 = r.MD5)
关于mysql - SQL 查询以查找包含多个标签的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5782026/