【问题标题】:List name that have every items in MsSQL具有 MsSQL 中每个项目的列表名称
【发布时间】:2017-10-22 10:05:50
【问题描述】:
TableA
Name Items
  A  1
  A  2
  A  2
  A  3
  A  3
  B  1
  B  1
  B  2
  B  2
  C  1
  C  2
  C  2
  C  3

TableB
Items ItemsName
   1  One
   2  Two
   3  Three

我要列出

Name
A
C

因为 A 和 C 拥有 TableB 中的所有项目。 B没有3。 我想我应该使用“NOT EXISTS”。

【问题讨论】:

    标签: sql sql-server tsql relational-division


    【解决方案1】:

    这是一种方法:

    SELECT a.Name
    FROM TableB AS b
    JOIN TableA as a ON b.Items = a.Items
    GROUP BY a.Name
    HAVING COUNT(DISTINCT b.Items) = (SELECT COUNT(DISTINCT Items) FROM TableB)
    

    查询将TableB 的记录与TableA 的记录连接起来。使用INNER JOIN,我们可以找到TableA 的匹配记录。

    HAVING 子句检查不同Items 值的数量是否等于TableB 的总体。仅返回与TableB所有 Items 值相关的a.Name 值。

    Demo here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 2020-11-03
      相关资源
      最近更新 更多