当我使用时:
insert into table2 select * from table1;
它是否按表的相对顺序或列名称匹配表1和表2?
答案 0 :(得分:1)
声明:
insert into table2
select *
from table1;
按列位置对齐列,不按列名对齐。在大多数情况下,您应该明确名称:
insert into table2(col1, . . . coln)
select col1, . . . coln
from table1;
Netezza以Postgres为基础。 Here是Postgres中的相关文档:
目标列名称可以按任何顺序列出。如果没有清单 列名完全给出,默认是所有列 表格按其声明的顺序;或者前N个列名称,如果有的话 只有VALUES子句或查询提供的N列。价值 由VALUES子句或查询提供的与 显式或隐式列列表从左到右。
但是,我认为这种行为是ANSI标准的一部分。我所知道的所有数据库都以这种方式运行。