我正在努力解决以下问题(进一步提供伪代码以使我的示例更容易理解)
\n假设我有 2 个查询,我想将其结果联合起来
\nquery1 输出如下:
\n\nID 报价\n1 prod_1\n2 prod_2\n3 prod_2\n4 prod_1\n\n
query2 输出如下:
\n\nID 段\n1 低\n2 高\n3 中\n999 中\n\n
我需要做的是合并这两个查询的结果,但避免获取 ID = 999 的行
\n是否有任何方法可以通过根据 query2 的列 ID 中存在的列 ID 的值从 query2 中提取行来使用 UNION 来执行此操作?
\n我知道下面的代码是不正确的,但它很大程度上传达了 \xe2\x80\x8b\xe2\x80\x8b 这个问题的想法:
\n--query1\n(\n SELECT ID, OFFER\n FROM TAB1\n WHERE ID <= 4\n) RES1\nUNION\n--query2\nSELECT ID, SEGMENT\nFROM TAB1\nWHERE ID IN (SELECT ID FROM RES2)\nRun Code Online (Sandbox Code Playgroud)\n结果应如下
\n\nID 报价\n1 prod_1\n2 prod_2\n3 prod_2\n4 prod_1\n1 低\n2 高\n3 中\n\n
感谢你的帮助
\n你的伪代码非常接近。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;
Run Code Online (Sandbox Code Playgroud)
(请注意,如果您不指定子句,则可以按任何顺序获取行ORDER BY。)
| 归档时间: |
|
| 查看次数: |
2349 次 |
| 最近记录: |