我有多个表都具有相同的列,但顺序不同。我想将它们合并在一起。我按照我想要的顺序创建了一个带有标准列的空表。我试过用
插入insert into master_table select * from table1;
但由于列顺序不同而无法正常工作 - 某些值最终会出现在错误的列中。以空主表中指定的顺序创建一个表的最佳方法是什么?
答案 0 :(得分:2)
如果要处理许多列和许多表,可以使用information_schema来获取列。您可以遍历要插入的所有表,并在plpgsql过程中运行它,将table1替换为变量:
EXECUTE (
SELECT
'insert into master_table
(' || string_agg(quote_ident(column_name), ',') || ')
SELECT ' || string_agg('p.' || quote_ident(column_name), ',') || '
FROM table1 p '
FROM information_schema.columns raw
WHERE table_name = 'master_table');
答案 1 :(得分:0)
只需在选择
中指明正确的顺序而不是
select *
如果你想在第二场比赛中获得3场。
select field1, field3, field2
或者您可以使用INSERT sintaxis
INSERT INTO master_table (field1, field3, field2)
SELECT *