如何返回至少有一行符合条件的值的所有行?

psr*_*psr 0 sql postgresql

我正在尝试返回一个或多个Num_Occurrence行> = 10的ID的所有行.

以下是原始数据的示例:

+------+-----------+----------------+
| 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              |
+------+-----------+----------------+
Run Code Online (Sandbox Code Playgroud)

这是所需的输出:

+------+-----------+----------------+
| ID   | YearMonth | Num_Occurrence |
+------+-----------+----------------+
| 1234 | 201601    | 7              |
+------+-----------+----------------+
| 1234 | 201602    | 8              |
+------+-----------+----------------+
| 1234 | 201603    | 12             |
+------+-----------+----------------+
| 1234 | 201604    | 9              |
+------+-----------+----------------+
Run Code Online (Sandbox Code Playgroud)

我知道以下内容不起作用:

SELECT *
FROM tbl
WHERE Num_Occurrence >= 10
Run Code Online (Sandbox Code Playgroud)

因为那只会返回这一行:

+------+-----------+----------------+
| ID   | YearMonth | Num_Occurrence |
+------+-----------+----------------+
| 1234 | 201603    | 12             |
+------+-----------+----------------+
Run Code Online (Sandbox Code Playgroud)

如前所述,我需要为NUM_Occurrence> = 10的任何ID返回所有行.

谢谢!!

Gra*_*per 5

SELECT * FROM [tbl] t1
WHERE EXISTS (SELECT * FROM [tbl] t2
              WHERE t2.ID = t1.id
              AND t2.Num_Occurrence >= 10);
Run Code Online (Sandbox Code Playgroud)

这里的"EXISTS"子句使用子查询来查找具有Num_Occurrence> = 10的所有行,然后将其与完整表进行比较以获得具有匹配ID的所有行.

  • @CoderofCode:`t2.Num_Occurrence> = 10`是正确的,`t2.id> = 10`不是. (2认同)