【问题标题】:SQL SELECT non-distinct values where multiple rows match [duplicate]多行匹配的SQL SELECT非不同值[重复]
【发布时间】:2019-04-27 16:47:34
【问题描述】:

我有一个多对多关系的联结表,如下所示:

Image_Tags:

Image_ID    |.    Tag_ID
4           |     5
4.          |     6
4           |     7
5           |     6
5           |     7

我想创建一个 SQL 查询来选择满足多个 Tag_ID 要求的 Image_ID。例如,我想查找同时具有 Tag_ID 5 和 6 的所有 Image_ID,返回图像 4 但不返回图像 5。我该怎么做?

【问题讨论】:

  • 嗨。这(显然)是重复的。 (并且没有显示任何研究工作,并且作为一个明显的常见问题解答,它没有用。)请始终使用谷歌错误消息以及您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,有和没有您的特定字符串/名称和“站点” :stackoverflow.com' & 标签 & 阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用 1 个变体搜索作为标签的标题和关键字。请参阅向下投票箭头鼠标悬停文本。如果您确实有要发布的非重复代码问题,请阅读并在minimal reproducible example 上采取行动。
  • 你为什么用关系代数标记?

标签: mysql sql


【解决方案1】:

您可以使用group byhaving

select image_id
from image_tags
where tag_id in (5, 6)
group by image_id
having count(*) = 2;  -- "2" is the number of tags in the IN list

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 2014-01-28
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    相关资源
    最近更新 更多