sql - 简化 Oracle 中的现有查询
问题描述
仅当存在具有 key_id ECRU 和 MTR 的记录时,如何简化以下查询以返回 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
and 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
推荐阅读
- c++ - 从 Windows 注册表下载类型库
- android - 如何使用 Android CameraX ImageAnalysis 提高帧速率?
- here-api - HERE平台上的批量地图更新
- textures - A-Frame 3D 模型和纹理加载问题
- ruby-on-rails - 如何遍历一组图像并使用 Active Storage 保存每个图像?
- node.js - 动态表单创建。如何保存数据类型
- javascript - 重定向到 ExpressJS api 中的 Facebook 回调链接后在 ReactJS 中获取 JWT 令牌
- reactjs - React 条件渲染和映射
- tensorflow - 如何在 SageMaker 上托管的 MobileNet SSD 模型上运行对象检测预测
- google-drive-api - 如何通过 API 在 Google 表格中获取单元格编辑日期?