簡體   English   中英

當一組中的一個或多個行的條件為真時,如何返回一組行?

[英]How do I return a set of rows when a condition is true on one or more rows within the set?

當一組中的一個或多個行的條件為真時,如何返回一組多行?

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

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

由於公共字段是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'
)
select record, version, indicator, area
from vista
where area IN
 (
 select area
 from vista
 where indicator = "B"
 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM