31

table1table2已经存在,这些查询之间有什么区别

查询1:-

select * into table1 from table2 where 1=1

查询2: -

insert into table1 select * from table2
4

6 回答 6

50

创建 table1 并在其中select * into table1 from table2 where 1=1插入 table2 的值。因此,如果表已创建,则该语句将给出错误。

insert into table1 select * from table2唯一将 table2 的值插入到 table1 中。

于 2011-12-19T11:29:31.850 回答
8

第一个 ( SELECT INTO) 将创建并填充一个新表,第二个 ( INSERT... SELECT) 将插入到现有表中。

在 2008 年之前的 SQL Server 版本中,第一个可以最少记录,而第二个则不能,但这不再是真的

于 2011-12-19T11:28:32.943 回答
5
select * into table1 from table2 where 1=1

上面的查询要求该表不存在。您不需要指定列,因为所有列都是在从源表中检索时创建的。

insert into table1 select * from table2 

对于上述查询,您需要一个 EXISTING table1。两个表中的列的顺序也应该完全相同,否则您需要为两个表提供列列表。

于 2011-12-19T11:37:28.263 回答
4

在下面的查询中,table1将被创建或者如果它已经存在则会抛出错误

select * into table1 from table2 where 1=1

在下面的查询中,表table1 必须在运行命令之前存在

insert into table1 select * from table2
于 2011-12-19T11:30:24.337 回答
1
INSERT INTO TABLE_A SELECT * FROM TABLE_B

是一个常用的句子,用于将一个表的值插入到另一个表中。也可以使用它插入选定的列。

SELECT * INTO TABLE_A FROM TABLE_B

将创建一个新的 TABLE_A 填充 TABLE_B 的值

于 2013-06-11T11:25:30.523 回答
0

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 但是请记住,每次执行都会累积重复数据查询。

于 2019-04-01T02:25:48.977 回答