sql - 如何返回所有行的值,其中至少有一行满足条件?

标签 sql postgresql

我正在尝试返回 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/

相关文章:

java - 如何将数据(字符串)写入文本文件

SQL 按时间条件分组累计求和

ruby-on-rails - postgresql:创建角色不起作用

mysql - 如何在 MySQL 中获取当前的舍入时间?

java - 从 oracle db 执行 java callout

SQL错误,我不明白

sql - 范围联接,无重复项

SQL查找子项匹配多行的父项

postgresql - COALESCE 在 Postgres 中返回文本类型而不是 time_stamp 类型

python - 在 Postgres 上使用 sqlalchemy 创建部分唯一索引