Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按列合并两个查询结果_Sql_Postgresql - Fatal编程技术网

Sql 按列合并两个查询结果

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 | 我目前的解决方案

假设有两个查询返回两个行数相同的表。 例如,如果查询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 |
我目前的解决方案是在每个查询中添加一个行号列,并在内部联接它们 在这个专栏上

选择 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等。