gpt4 book ai didi

postgresql - 使用 PostgreSQL 将两个选择查询的结果添加到一个表行中

转载 作者:行者123 更新时间:2023-11-29 13:32:26 25 4
gpt4 key购买 nike

我试图将两个不同的选择语句的结果返回到 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 |
+-----------+-----------+-----------+-----------+

现在我想连接这些表以保持相同的行数。我不想加入任何值(value)观。所需的结果如下所示:

+----------+----------+----------+-----------+-----------+-----------+-----------+
| 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) 做些什么来返回上面想要的结果。

谢谢!

最佳答案

您可以使用 row_number() 进行连接,但我不确定您能否保证行的顺序与表中的顺序保持一致。所以最好在 over() 子句中添加一些顺序。

with cte1 as (
select
tableid1, tableid2, tableid3, row_number() over() as rn
from table1
), cte2 as (
select
table2id1, table2id2, table2id3, table2id4, row_number() over() as rn
from table2
)
select *
from cte1 as c1
inner join cte2 as c2 on c2.rn = c1.rn

关于postgresql - 使用 PostgreSQL 将两个选择查询的结果添加到一个表行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20403081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com