sql - 联合两个查询结果按列
问题描述
假设我有两个查询返回两个具有相同行数的表。例如,如果查询 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
or q2
; 唯一可用的信息是它们都是有效的 SQL 查询并且不包含具有相同名称的列。是否有任何类似于UNION
列而不是行的 SQL 构造?
解决方案
没有这样的功能。表中的一行是一个实体。
如果您正在构建在任何表上运行的通用代码,您可以尝试使用不太常见的值,例如"an unusual query rownum"
-- 或比这更深奥的东西。我建议在两个表中使用相同的名称,然后using
对join
.
推荐阅读
- node.js - Sequelize Migration 错误:方言需要从 v4.0.0 起显式提供
- ocr - Pytesseract:不阅读手写文本
- vue.js - Bootstrap vue 从对象列表中选择对象 b-form-select
- scala - 如何在本地环境中正确配置 gcs-connector
- python - 如何让不和谐机器人在启动时发送消息?
- regex - Perl - 正则表达式 - 组捕获
- jquery - jquery滚动全屏背景div
- swift - SourceKitService 占用高达 200% 的 CPU
- android - 简单推理示例 tflite + kotlin
- django - 在 Django Rest Framework 中使用动态序列化程序更新模型