假设我有一个表,其中列 ID 和内容填充了数据。

ID | Content
1  | a
1  | b
1  | c
2  | b
2  | a
3  | b

我想找到每个 ID 中至少有一个“a”、“b”和“c”,所以返回的表是:
ID | Content
1  | a
1  | b
1  | c

最佳答案

使用条件 SUM 验证 group id 内部是否存在 1 个或多个每个元素。

然后选择 DISTINCT ID, Content 消除可能的重复

SELECT DISTINCT ID, Content
From YourTable
WHERE ID IN (SELECT ID
             FROM YourTable
             GROUP BY ID
             HAVING SUM(case when Content = 'a' then 1 else 0 end) >= 1
                AND SUM(case when Content = 'b' then 1 else 0 end) >= 1
                AND SUM(case when Content = 'c' then 1 else 0 end) >= 1
            )

关于mysql - SQL 计算具有满足条件的列的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33537116/

10-12 12:34
查看更多