【问题标题】:How to fetch the Group that Contains only some specific Items in SQL?如何获取仅包含 SQL 中某些特定项目的组?
【发布时间】:2019-12-04 13:53:42
【问题描述】:

我们在一个表中有一些记录。不同的项目与特定的组相关联。如下图,Item 20,21属于GroupId 1,而Items 20,21,5属于另一个GroupId 2。

     Id   GroupId    Item
-------------------------
 1   1      1        20
 2   2      1        21
 3   3      2        20
 4   4      2        21
 5   5      2         5

我想从上表中获取仅包含项目 20 和 21 的 GroupId。所以在上面的示例中它应该返回 GroupId 1。

有人可以建议一种如何获取 GroupId 1 的方法吗?

以下是使用上述记录创建和填充数据表的脚本

CREATE TABLE Data
(
     Id INT IDENTITY, 
     GroupId INT, 
     Item INT 
)

INSERT INTO Data 
VALUES (1, 20), (1, 21), (2, 20), (2, 21), (2, 5)

【问题讨论】:

    标签: sql


    【解决方案1】:

    GroupId 聚合是这里的一种选择:

    SELECT GroupId
    FROM Data
    GROUP BY GroupId
    HAVING COUNT(CASE WHEN Item NOT IN (20, 21) THEN 1 END) = 0;
    

    查看下面运行的演示。

    Demo

    【讨论】:

    • 过去 3 天我一直坚持这个问题,在以某种方式提出问题时,我无法添加图像,所以我试图将图像添加回来,但你在一分钟内就正确回答了没有图像。非常感谢您的回复。这正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2020-09-01
    相关资源
    最近更新 更多