[英]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.