简化 Oracle 中的现有查询
Simplify Exist Query in Oracle
仅当存在包含 key_id ECRU 和 MTR 的记录时,我如何才能将以下查询简化为 return field2。
SELECT
z.field2
FROM
mytable z
WHERE
z.key_id = 'ECRU'
AND EXISTS (
SELECT
1
FROM
mytable
WHERE
key_id = 'MTR'
AND field2 = z.field2
)
您可以使用 group by
和 having
:
select field2
from mytable
where key_id in ('ECRU', 'MTR')
group by field2
having count(*) = 2
这假设没有重复 (field2, key_id)
。否则,您需要稍微更改 having
子句:
having count(distinct key_id) = 2
仅当存在包含 key_id ECRU 和 MTR 的记录时,我如何才能将以下查询简化为 return field2。
SELECT
z.field2
FROM
mytable z
WHERE
z.key_id = 'ECRU'
AND EXISTS (
SELECT
1
FROM
mytable
WHERE
key_id = 'MTR'
AND field2 = z.field2
)
您可以使用 group by
和 having
:
select field2
from mytable
where key_id in ('ECRU', 'MTR')
group by field2
having count(*) = 2
这假设没有重复 (field2, key_id)
。否则,您需要稍微更改 having
子句:
having count(distinct key_id) = 2