当集合中的一个或多个行的条件为真时,如何返回包含多个行的集合?
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指示符,我希望返回该记录集中的所有行。
我可以查询该条件,但它只返回条件为true的一行。
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
发布于 2019-08-24 00:15:58
您可以使用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');
发布于 2019-08-24 00:17:39
由于公共字段为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'
)
发布于 2019-08-24 00:17:46
select record, version, indicator, area
from vista
where area IN
(
select area
from vista
where indicator = "B"
)
https://stackoverflow.com/questions/57634205
复制