如何合并 PostgreSQL中的相同表格强制使用不同的序列号。
我的方案:第一列是一个bigserial数字,主键设置为按序列中的增量1自动增长。但他们都以1,2,3,4 ......开头。
表:Data1
1|A 2|B 3|C
表:Data2
1|D 2|E 3|F
结果应该是:
1|A 2|B 3|C 4|D 5|E 6|F
必需条件:合并后所有行的序列号应保持唯一。
我有两个问题:
有人可以帮我弄清楚如何创建一个查询来合并PostgreSQL 8.4+或9 +中的两个相同的表吗?
在PostgreSQL命令或PgAdmin或某些实用程序中是否有办法直接合并这两个表?
请指导我。
答案 0 :(得分:1)
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 ....
答案 1 :(得分:0)
这样你
WITH x AS (
SELECT max(id) AS x
FROM tbl1
)
SELECT id, val
FROM tbl1
UNION ALL
SELECT x + id, val
FROM tbl2, x
ORDER BY id;
CTE需要PostgreSQL 8.4或更高版本
您可以查看tbl1
的最大值,并将tbl2
中的ID增加一个大于该值的精确数字。
如果你不关心以前的ID,去除重复的值并且没有间隙的ID(最初),那么@ a_horse'e答案对你来说更好。