当一组中的一个或多个行的条件为真时,如何返回一组多行?
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
答案 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"
)