sql - MS SQL - 从多对多表中选择数据,其中列的值与所有给定值匹配

标签 sql sql-server

我有一个名为 SUPPLIER_CATEGORY 的表,作为 SUPPLIER 和 CATEGORY 表之间的多对多关系。我想要的是从 SUPPLIER_CATEGORY 表中获取与给定的所有 CATEGORY_ID 相匹配的 SUPPLIER_ID。

例如,请考虑下表

SUPPLIER_ID    CATEGORY_ID

101                1
101                2
102                1
102                3
103                1
103                2
103                3

如果我想获取 CATEGORY_ID 1 和 2 的 SUPPLIER_ID。查询应返回 SUPPLIER_ID 101 和 103,但不是 102,因为它的 CATEGORY_ID = 1。因为它不包含 CATEGORY_ID 2。希望它有意义。

编辑:

注意:CATEGORY_ID 可以超过 2 个数字。

谢谢。

最佳答案

对于给定的示例数据,下面是查询。

select supplier_id
from <tableName>
where category_id in (1, 2)
group by supplier_id
having count(*) > 1

关于sql - MS SQL - 从多对多表中选择数据,其中列的值与所有给定值匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54624543/

相关文章:

mysql - 没有默认值的时间戳列默认值出现错误 1067

MySQL - 检索 LEFT JOIN 中关联列的最大值,其周长与主查询的 WHERE 子句不同

mysql - SQL - 如何过滤连接表中的多行?

sql-server - 如果使用 View ,更新 Azure 搜索文档是否会更新我的数据库

sql-server - 全文搜索问题

sql - 如何限制 MERGE 语句中 OUTPUT 子句的操作?

mysql - 根据持续时间对 Sql 表中的日期进行分组

sql-server - 根据该行中的值填充行

sql-server - 运行 MSsql 查询类似 foreach

asp.net - 为 ASP .NET 网站部署数据库