首页 > 解决方案 > 当集合中的一个或多个行的条件为真时,如何返回一组行?

问题描述

当集合中的一个或多个行的条件为真时,如何返回一组多行?

RECORD  VERSION INDICATOR AREA
1234    01  A     CA
1234    02  B     CA
1234    03  C     CA
5678    01  D     CO
5678    02  L     CO
5678    03  F     CO

例如,如果集合中存在 B 指示符,我想返回记录集中的所有行。

我可以查询该条件,但它只返回条件为真的那一行。

SELECT
record,
version,
indicator, 
area

FROM vista
WHERE indicator = 'B';

预期成绩:

RECORD  VERSION INDICATOR AREA
1234    01  A     CA
1234    02  B     CA
1234    03  C     CA

标签: sql

解决方案


您可以使用EXISTS相关子查询来检查带有'B'指示符的记录。

SELECT v1.record,
       v1.version,
       v1.indicator, 
       v1.area
       FROM vista v1
       WHERE EXISTS (SELECT *
                            FROM vista v2
                            WHERE v2.record = v1.record
                                  AND v2.indicator = 'B');

推荐阅读