mysql - SQL中的很多条件

标签 mysql sql many-to-many

我遇到 SQL 查询问题...我有 3 个表(图像、标签、Image_Tag):

图片

Image_ID  |  Image_Path
1            img1.png
2            img2.png
3            img3.png

标签

Tag_ID    |  Name
1            Tag 1
2            Tag 2
3            Tag 3

Image_Tag

Image_ID  |  Tag_ID
1            2
2            3
3            1
3            2

如您所见,第三张图片有两个标签:Tag1 和 Tag2。我想创建一个查询来选择具有所有传递标签的图像。

例如,如果我提供标签 2,我会收到图像 #1 和 #3,但如果我添加标签 1,我只会收到图像 #3。

我尝试使用 IN 条件,但它返回了与标签匹配的所有结果。

你有什么想法吗?谢谢。

最佳答案

SELECT  DISTINCT a.*
FROM    Images a
        INNER JOIN Image_Tag b
            ON a.Image_ID = b.Image_ID
        INNER JOIN Tags c
            ON b.Tag_ID = c.Tag_ID
WHERE   c.Name IN ('Tag2')

要进一步了解有关联接的更多知识,请访问以下链接:

更新1

SELECT  a.*
FROM    Images a
        INNER JOIN Image_Tag b
            ON a.Image_ID = b.Image_ID
        INNER JOIN Tags c
            ON b.Tag_ID = c.Tag_ID
WHERE   c.Name IN ('Tag1','Tag2')
GROUP   BY a.Image_ID, a.Image_Path
HAVING  COUNT(*) = 2

关于mysql - SQL中的很多条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15182716/

相关文章:

uml - UML类模型如何建立多对多关系

php - 多条件搜索查询生成器 [symfony2]

mysql - 如何从 MySQL Workbench 异步运行查询

sql - 按 60 分钟持续时间对记录进行分组,从第一条记录的时间戳开始小时

sql - 将列转置为表格

google-app-engine - 如何查询多对多关系模型? - 谷歌应用程序引擎

Django 在管理页面上显示多对多关系中的更多字段

php - SQL 查询为 PHP 中的 ID 列返回不正确的值

php - 如何在单次插入时插入具有不同日期的相同值?

mysql - SQL 自连接空值