我想写一个查询来按ID1,ID2进行分组,但是仅返回ID2的唯一ID1> 1的ID。

我有这样的数据:

+------+------+
|  ID1 |  ID2 |
+------+------+
|1     |A     |
+------+------+
|1     |A     |
+------+------+
|2     |A     |
+------+------+
|3     |B     |
+------+------+
|3     |B     |
+------+------+
|4     |C     |
+------+------+
|5     |C     |
+------+------+
|6     |D     |
+------+------+
|6     |D     |
+------+------+
|7     |E     |
+------+------+

理想情况下,我的输出将如下所示:
+------+
| ID2  |
+------+
|A     |
+------+
|C     |
+------+

注意,对于ID2 ='B'或ID2 ='D'来说,> 1条记录的记录如何,但是它们具有相同的ID1。在示例A中,即使存在重复的ID1值“1”,我还是要选择它,因为还有另一个唯一ID1-“2”。

最佳答案

您可以在COUNT(DISTINCT ID1)子句中使用having,如下所示:

SELECT ID2
FROM tbl
GROUP BY sID2
HAVING COUNT(DISTINCT ID1) > 1

关于sql - 使用两个键的SQL组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55065142/

10-09 17:46
查看更多