如何在PostgreSQL中合并相同的表?
如何在PostgreSQL中合并相同的表强制使用不同的序列号 My scenario:第一列是一个大序列号,它是设置为按顺序递增1自动增长的主键。但它们都是从1,2,3,4开始的。。。。在两个表中 表:数据1 1|A 2|B 3|C 1 | A 2 | B 3 | C 表:数据2 1|D 2|E 3|F 1 | D 2 | E 3 | F 结果应该是: 1|A 2|B 3|C 4|D 5|E 6|F 1 | A 2 | B 3 | C 4 | D 5 | E 6 | F 所需条件:合并后,所有行的序列号应保持唯一 我有两个问题:如何在PostgreSQL中合并相同的表?,sql,postgresql,merge,Sql,Postgresql,Merge,如何在PostgreSQL中合并相同的表强制使用不同的序列号 My scenario:第一列是一个大序列号,它是设置为按顺序递增1自动增长的主键。但它们都是从1,2,3,4开始的。。。。在两个表中 表:数据1 1|A 2|B 3|C 1 | A 2 | B 3 | C 表:数据2 1|D 2|E 3|F 1 | D 2 | E 3 | F 结果应该是: 1|A 2|B 3|C 4|D 5|E 6|F 1 | A 2 | B 3 | C 4 | D 5 | E 6 | F 所需条件:合并后,所有行
SELECT *
FROM (
SELECT row_number() over () as rn,
code
FROM (
SELECT code
FROM table_1
UNION
SELECT code
FROM table_2
) as t1
) as t2
ORDER BY rn
使用上述结果,您可以创建一个新表:
CREATE TABLE new_table
AS
SELECT ....
使用上述结果,您可以创建一个新表:
CREATE TABLE new_table
AS
SELECT ....
这样你
- 保留所有行(包括重复行)
- 保持第一个表中值的ID不变
- 保留可以与第二个表匹配的ID
您只需查看
tbl1
的最大值,然后将tbl2
中的ID增加一个比这个大的整数即可
如果你不在乎以前的ID,去掉重复的值,让ID没有间隙(最初),那么@a_horse'e答案更适合你。这样你就可以
- 保留所有行(包括重复行)
- 保持第一个表中值的ID不变
- 保留可以与第二个表匹配的ID
您只需查看
tbl1
的最大值,然后将tbl2
中的ID增加一个比这个大的整数即可
如果你不在乎以前的ID,去掉重复的值,让ID没有间隙(最初),那么@a_horse'e答案对你来说更好。你想要所有的联合,而不是联合(这将消除重复的“代码”值),我也考虑过,但我不完全确定。示例中不清楚,user1227809没有提到任何表示应该保留重复项的内容。您希望在那里全部使用UNION,而不是UNION(这将消除重复的“代码”值)。我也考虑过这一点,但我不完全确定。示例中不清楚,user1227809没有提到任何表示应该保留副本的内容。