【发布时间】:2021-03-27 17:40:18
【问题描述】:
假设我有两个查询返回两个具有相同行数的表。 例如,如果查询 1 返回
| a | b | c |
| 1 | 2 | 3 |
| 4 | 5 | 6 |
查询 2 返回
| d | e | f |
| 7 | 8 | 9 |
| 10 | 11 | 12 |
如何获得以下内容,假设两个查询都是不透明的
| a | b | c | d | e | f |
| 1 | 2 | 3 | 7 | 8 | 9 |
| 4 | 5 | 6 | 10 | 11 | 12 |
我目前的解决方案是为每个查询添加一个行号列并内部连接它们 在这个专栏上。
SELECT
q1_with_rownum.*,
q2_with_rownum.*
FROM (
SELECT ROW_NUMBER() OVER () AS q1_rownum, q1.*
FROM (.......) q1
) q1_with_rownum
INNER JOIN (
SELECT ROW_NUMBER() OVER () AS q2_rownum, q2.*
FROM (.......) q2
) q2_with_rownum
ON q1_rownum = q2_rownum
但是,如果在任一查询中有名为 q1_rownum 的列,
以上将打破。我无法查看q1 或q2;
唯一可用的信息是它们都是有效的 SQL 查询
并且不包含具有相同名称的列。是否有任何 SQL 构造
类似于 UNION 但用于列而不是行?
【问题讨论】:
标签: sql postgresql