简化 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 byhaving:

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