mysql - SQL 查询以查找包含多个标签的资源

标签 mysql sql select

我有两个表。

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/

相关文章:

java - 如何在Java中选择数组中的变量?

文件上的mysql加密 key 存储

c# - 获取 checkedCheckList (Form1) 的 GetItemCheckState (在 Form2)

Mysql:选择任意年份 1 月 22 日至 2 月 3 日之间的时间戳

php - 如何在 MySQL 表中的一个特定元素周围(之前和之后)选择固定数量的元素?

mysql - 从 MySQL 5.0 迁移到 5.1 的原因

MySQL 5.7 |分组依据 |非聚合列错误

mysql - 重命名 SQL 中的列

mysql - 如何从 MySQL 中检索 JSON 数据?

mysql - 从列表中获取不在数据库中的 ID