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

时间:2019-08-24 00:12:07

标签: sql

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

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

3 个答案:

答案 0 :(得分:1)

您可以使用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');

答案 1 :(得分:0)

由于公共字段是Area,因此您需要在该字段上匹配的两个子集。

SELECT va.record, va.version, va.indicator, va.area
FROM vista va
WHERE va.Area = 'CA' AND EXISTS (
  SELECT * FROM vista WHERE Area = va.Area and vi.indicator = 'B'
)

答案 2 :(得分:0)

select record, version, indicator, area
from vista
where area IN
 (
 select area
 from vista
 where indicator = "B"
 )