【发布时间】:2013-12-05 14:49:46
【问题描述】:
我试图将两个不同的选择语句的结果返回到 PostgreSQL 中的一行。例如,我有两个查询,每个查询都返回相同的行数:
从table1中选择tableid1、tableid2、tableid3
+----------+----------+----------+
| tableid1 | tableid2 | tableid3 |
+----------+----------+----------+
| 1 | 2 | 3 |
| 4 | 5 | 6 |
+----------+----------+----------+
从table2中选择table2id1、table2id2、table2id3、table2id4
+-----------+-----------+-----------+-----------+
| table2id1 | table2id2 | table2id3 | table2id4 |
+-----------+-----------+-----------+-----------+
| 7 | 8 | 9 | 15 |
| 10 | 11 | 12 | 19 |
+-----------+-----------+-----------+-----------+
现在我想连接这些表以保持相同的行数。我不想加入任何价值观。期望的结果如下所示:
+----------+----------+----------+-----------+-----------+-----------+-----------+
| tableid1 | tableid2 | tableid3 | table2id1 | table2id2 | table2id3 | table2id4 |
+----------+----------+----------+-----------+-----------+-----------+-----------+
| 1 | 2 | 3 | 7 | 8 | 9 | 15 |
| 4 | 5 | 6 | 10 | 11 | 12 | 19 |
+----------+----------+----------+-----------+-----------+-----------+-----------+
我可以对上面的两个查询(select * from table1)和(select * from table2)做些什么来返回上面想要的结果。
谢谢!
【问题讨论】:
-
您需要按某列排序的行吗?我的意思是你介意在结果的第一行有
tableid1= 4,在第二行有tableid1= 1? -
是的,我将结果反馈到 java 中,我需要按设定的顺序引用列。我实际上正在做类似 (select tableid1, tableid2, tableid3 from table1) 和 (select table2id1, table2id2, table2id3, and table2id4 from table2) 所以如果它们可以保持相同的顺序,那就太好了
-
@user2255175 在那些
SELECTs 中没有没有排序。数据库服务器可以按照它想要的任何顺序返回它们。你需要一个ORDER BY子句。目前只是靠运气以某种特定的顺序回来。 -
...实际上,无论您做什么,您都正在进行连接。您实际上是在问“我如何在不进行联接的情况下进行联接”。
标签: postgresql stored-procedures concatenation