我正在尝试返回 ID 的所有行,其中一个或多个 Num_Occurrence 行 >=10。
这是原始数据的示例:
+------+-----------+----------------+
| ID | YearMonth | Num_Occurrence |
+------+-----------+----------------+
| 1234 | 201601 | 7 |
+------+-----------+----------------+
| 1234 | 201602 | 8 |
+------+-----------+----------------+
| 1234 | 201603 | 12 |
+------+-----------+----------------+
| 1234 | 201604 | 9 |
+------+-----------+----------------+
| 9898 | 201601 | 9 |
+------+-----------+----------------+
| 9898 | 201602 | 8 |
+------+-----------+----------------+
| 9898 | 201603 | 9 |
+------+-----------+----------------+
| 9898 | 201604 | 6 |
+------+-----------+----------------+
这是期望的输出:
+------+-----------+----------------+
| ID | YearMonth | Num_Occurrence |
+------+-----------+----------------+
| 1234 | 201601 | 7 |
+------+-----------+----------------+
| 1234 | 201602 | 8 |
+------+-----------+----------------+
| 1234 | 201603 | 12 |
+------+-----------+----------------+
| 1234 | 201604 | 9 |
+------+-----------+----------------+
我知道以下内容不起作用:
SELECT *
FROM tbl
WHERE Num_Occurrence >= 10
因为那只会返回这一行:
+------+-----------+----------------+
| ID | YearMonth | Num_Occurrence |
+------+-----------+----------------+
| 1234 | 201603 | 12 |
+------+-----------+----------------+
如前所述,我需要返回 Num_Occurrence >=10 的任何 ID 的所有行。
谢谢!!
最佳答案
SELECT * FROM [tbl] t1
WHERE EXISTS (SELECT * FROM [tbl] t2
WHERE t2.ID = t1.id
AND t2.Num_Occurrence >= 10);
此处的“EXISTS”子句使用子查询来查找 Num_Occurrence >= 10 的所有行,然后将其与完整表进行比较以获取具有匹配 ID 的所有行。
关于sql - 如何返回所有行的值,其中至少有一行满足条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41093426/