Sql 有效的更新,插入语法?
这些陈述有效吗Sql 有效的更新,插入语法?,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,这些陈述有效吗 UPDATE Table1 FROM (SELECT * FROM Table2) INSERT INTO Table1 (SELECT * FROM Table2) update语句需要为每个要更新的字段设置一个集合,所以不需要。 正确语法: UPDATE table1 SET table1.field1=table2.field1, table1.field2=table2.field2 FROM table1 INNER JOIN table2
UPDATE Table1
FROM (SELECT * FROM Table2)
INSERT INTO Table1
(SELECT * FROM Table2)
update语句需要为每个要更新的字段设置一个集合,所以不需要。 正确语法:
UPDATE table1
SET table1.field1=table2.field1, table1.field2=table2.field2
FROM table1
INNER JOIN table2 ON table1.keyfield = table2.keyfield
如果表1和表2的列顺序相同,则insert语句将起作用
编辑:如果您正在寻找更新/插入Upsert的示例,请查看这个在SQL 2008上运行的示例,不确定是否是2005年,但对此表示怀疑
另一个选项是更新,然后插入。例如:
update语句需要为每个要更新的字段设置一个集合,所以不需要。 正确语法:
UPDATE table1
SET table1.field1=table2.field1, table1.field2=table2.field2
FROM table1
INNER JOIN table2 ON table1.keyfield = table2.keyfield
如果表1和表2的列顺序相同,则insert语句将起作用
编辑:如果您正在寻找更新/插入Upsert的示例,请查看这个在SQL 2008上运行的示例,不确定是否是2005年,但对此表示怀疑
另一个选项是更新,然后插入。例如:
如果你幸运的话,这可能会奏效
我建议使用更严格的语法:
INSERT INTO dbo.Table1 (Field1, Field2, ..., FieldN)
SELECT Field1, Field2, ..., FieldN
FROM dbo.Table2
我将始终明确地为INSERT和SELECT语句指定模式dbo和字段。那样的话,你可以
消除计算列、标识列和其他潜在问题列
将另一列添加到两个表中时,SQL语句不会中断
马克
如果你幸运的话,这可能会奏效
我建议使用更严格的语法:
INSERT INTO dbo.Table1 (Field1, Field2, ..., FieldN)
SELECT Field1, Field2, ..., FieldN
FROM dbo.Table2
我将始终明确地为INSERT和SELECT语句指定模式dbo和字段。那样的话,你可以
消除计算列、标识列和其他潜在问题列
将另一列添加到两个表中时,SQL语句不会中断
Marc一个小警告是,如果存在任何标识字段,则插入将失败。您应该始终指定要使用的列。添加、删除或重新排序列时,Select*可能会停止工作。SQL Server 2008中始终存在“合并”以执行UPSERT更新/插入。实际上,我正试图使用SQL 2005执行UPSERT。有两个TSQl添加项相交和除外。在其中一个博客中,有人说从Select tab1 INTERSECTION Destination更新Table1,并从Select tab1插入tab1,但tab2除外。感谢大家的参与@这是SQL 2005,我没有合并功能@C-Pound:我有你提到的Update和Insert语句。使用EXCEPT和INTERSECT的想法是抵消这些连接。此外,他们还声称这些新的T-SQL在性能方面优于连接。一个小警告是,如果存在任何标识字段,则插入将失败。您应该始终指定要使用的列。添加、删除或重新排序列时,Select*可能会停止工作。SQL Server 2008中始终存在“合并”以执行UPSERT更新/插入。实际上,我正试图使用SQL 2005执行UPSERT。有两个TSQl添加项相交和除外。在其中一个博客中,有人说从Select tab1 INTERSECTION Destination更新Table1,并从Select tab1插入tab1,但tab2除外。感谢大家的参与@这是SQL 2005,我没有合并功能@C-Pound:我有你提到的Update和Insert语句。使用EXCEPT和INTERSECT的想法是抵消这些连接。他们还声称,这些新的T-SQL在性能方面优于连接。