说table1
和table2
已经存在,这些查询之间有什么区别
查询1:-
select * into table1 from table2 where 1=1
查询2: -
insert into table1 select * from table2
说table1
和table2
已经存在,这些查询之间有什么区别
查询1:-
select * into table1 from table2 where 1=1
查询2: -
insert into table1 select * from table2
创建 table1 并在其中select * into table1 from table2 where 1=1
插入 table2 的值。因此,如果表已创建,则该语句将给出错误。
insert into table1 select * from table2
唯一将 table2 的值插入到 table1 中。
第一个 ( SELECT INTO
) 将创建并填充一个新表,第二个 ( INSERT... SELECT
) 将插入到现有表中。
在 2008 年之前的 SQL Server 版本中,第一个可以最少记录,而第二个则不能,但这不再是真的。
select * into table1 from table2 where 1=1
上面的查询要求该表不存在。您不需要指定列,因为所有列都是在从源表中检索时创建的。
insert into table1 select * from table2
对于上述查询,您需要一个 EXISTING table1。两个表中的列的顺序也应该完全相同,否则您需要为两个表提供列列表。
在下面的查询中,table1
将被创建或者如果它已经存在则会抛出错误
select * into table1 from table2 where 1=1
在下面的查询中,表table1
必须在运行命令之前存在
insert into table1 select * from table2
INSERT INTO TABLE_A SELECT * FROM TABLE_B
是一个常用的句子,用于将一个表的值插入到另一个表中。也可以使用它插入选定的列。
SELECT * INTO TABLE_A FROM TABLE_B
将创建一个新的 TABLE_A 填充 TABLE_B 的值
a) select * into table1 from table2 where 1=1 -如果 table1 和 table2 已经存在,执行查询时会出现以下错误。“消息 2714,级别 16,状态 6,第 1 行数据库中已经有一个名为 'table1' 的对象”
b) insert into table1 select * from table2 - 如果 table1 与 table2 重复,则此查询考虑常见的插入语句 Exp: select * into table1 from table2 where 1=0 但是请记住,每次执行都会累积重复数据查询。