Sql 按列合并两个查询结果
假设有两个查询返回两个行数相同的表。 例如,如果查询1返回Sql 按列合并两个查询结果,sql,postgresql,Sql,Postgresql,假设有两个查询返回两个行数相同的表。 例如,如果查询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 | 我目前的解决方案
| 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 |
我目前的解决方案是在每个查询中添加一个行号列,并在内部联接它们
在这个专栏上
选择
q1_与_rownum.*,
q2_与_rownum*
从…起
选择上面的行数作为q1行数,q1*
从…起q1
q1_与_rownum
内连接
选择上面的行数作为q2的行数,q2*
从…起问题2
q2_与_rownum
在q1_rownum=q2_rownum上
但是,如果在任一查询中都有一个名为q1_rownum的列,
上述情况将被打破。我不可能研究q1或q2;
唯一可用的信息是它们都是有效的SQL查询
和不包含具有相同名称的列。有SQL构造吗
与UNION类似,但用于列而不是行?我不确定是否理解您的确切问题,但我认为您的意思是q1和q2都连接在一个同名的列上 应在列之前添加每个表名,以区分引用的列: table1.similarColumnName=table2.similarColumnName 编辑: 所以,问题是,如果已经有一列与您的行号具有相同的别名,则无法进行联接,因为您的列名不明确 如果您不知道传入表的列,则更简单的解决方案是创建一个实体别名,例如_query\u join\u row\u number 编辑2: 您可以考虑在所有列的前面加上它们的原始表名,从而消除q1_与_rows.rows之间的任何冲突,冲突列是q1_与_rows.q1.rows
这方面的一个示例堆栈:不确定我是否理解您的确切问题,但我认为您的意思是q1和q2都连接在一个同名的列上 应在列之前添加每个表名,以区分引用的列: table1.similarColumnName=table2.similarColumnName 编辑: 所以,问题是,如果已经有一列与您的行号具有相同的别名,则无法进行联接,因为您的列名不明确 如果您不知道传入表的列,则更简单的解决方案是创建一个实体别名,例如_query\u join\u row\u number 编辑2: 您可以考虑在所有列的前面加上它们的原始表名,从而消除q1_与_rows.rows之间的任何冲突,冲突列是q1_与_rows.q1.rows
此上的示例堆栈:没有此类函数。表中的行是一个实体
如果要构造在任何表上运行的通用代码,可以尝试使用不太常见的值,例如不寻常的查询rownum,或者更深奥的值。我建议在两个表中使用相同的名称,然后对联接使用using子句。没有这样的函数。表中的行是一个实体
如果要构造在任何表上运行的通用代码,可以尝试使用不太常见的值,例如不寻常的查询rownum,或者更深奥的值。我建议在两个表中使用相同的名称,然后在联接中使用using子句。此外,如果两个查询都没有id,请确保您的行与ORDER BY匹配。如果像client1和client2这样的每一行都有意义,它们应该对a列和f列有自己的结果,而不是混合upI,那么我无法查看这两个查询,因为它们是用户输入的SQL字符串,所以我不知道table1实际有哪些列。。。如果table1已经有一个名为rownum的列,它将与我的SELECT ROW_编号冲突,因为rownumca不相信我忘记了,但Gordon Linoff说得对。使用column是表1.column=table2.column.Ah的快捷方式,您的问题与JOIN then无关,而是是否可以使用别名。我认为生成的默认名称是row_number,只要使用它就行了?基本上,我有两个表,行数相等,所有列名称都不同。我想创建第三个表,其中包含两个表中的列。我不可能知道每个表实际上有哪些列,因此没有SELECT q1.col_1、q1.col_2等。此外,如果两个查询都没有id,请确保您的行与ORDER BY匹配。如果像client1和client2这样的每一行都有意义,它们应该对a列和f列有自己的结果,而不是混合upI,那么我无法查看这两个查询,因为它们是用户输入的SQL字符串,所以我不知道table1实际有哪些列。。。如果table1已经有一个名为rownum的列,它将与我的SELECT ROW_编号冲突,因为rownumca不相信我忘记了,但Gordon Linoff说得对。使用column是表1.column=table2.column.Ah的快捷方式,您的问题与JOIN then无关,而是是否可以使用别名。我认为生成的默认名称是row_number,只要使用它就行了?基本上,我 有两个行数相等且所有列名不同的表。我想创建第三个表,其中包含两个表中的列。我不可能知道每个表实际上有哪些列,因此没有选择q1.col_1、q1.col_2等。