sql - 第二个查询中的 UNION 表基于 Oracle sql 中第一个查询的结果
问题描述
我正在努力解决以下问题(我进一步提供伪代码以使我的示例更易于理解)
假设我有 2 个查询,结果我想相互联合
query1 的输出如下所示:
身份证件 1 个产品_1 2 产品_2 3 产品_2 4 产品_1
query2 的输出如下所示:
标识段 1 低 2 高 3 中号 第999章
我需要做的是合并这两个查询的结果,但避免使用 ID = 999 的行
如果有什么方法可以通过基于 query2 的列 ID 中存在的列 ID 的值从 query2 行中提取来使用 UNION 来做到这一点?
我知道下面的代码是不正确的,但它很好地传达了问题的想法:
--query1
(
SELECT ID, OFFER
FROM TAB1
WHERE ID <= 4
) RES1
UNION
--query2
SELECT ID, SEGMENT
FROM TAB1
WHERE ID IN (SELECT ID FROM RES2)
结果应该如下
身份证件 1 个产品_1 2 产品_2 3 产品_2 4 产品_1 1 低 2 高 3 中号
感谢你的帮助
解决方案
您的伪代码非常接近。您可以WITH
使用方便:
WITH q1 AS (SELECT id, offer FROM tab1 WHERE id <= 4)
, q2 AS (SELECT id, segment FROM tab1 WHERE id IN (SELECT id FROM q1))
SELECT * FROM q1
UNION ALL
SELECT * FROM q2;
(请注意,如果您不指定ORDER BY
子句,您可以按任何顺序获取行。)
推荐阅读
- java - Sort .txt data in a special way in java
- python - 熊猫没有替换大型数据框中的字符
- python - Django 动态生成序列化器
- session - 使用多个域的多租户会话管理
- unit-testing - Angular 11 单元测试代码覆盖率现已突破
- python - 如何从python中的文件文件夹中获取列表列表?
- leaflet - 手绘传单(手机)
- visual-studio-code - 如何将 bundle.js 或其他构建文件排除在 Visual Studio 代码搜索结果之外?
- python - 模块命名重叠
- javascript - 如何在 javascript 中访问对象中的值?