【发布时间】:2011-01-31 13:46:35
【问题描述】:
我有以下两张表:
Table1
----------
ID Name
1 A
2 B
3 C
Table2
----------
ID Name
1 Z
我需要将数据从Table1 插入到Table2。我可以使用以下语法:
INSERT INTO Table2(Id, Name) SELECT Id, Name FROM Table1
但是,在我的情况下,Table2 中可能存在重复的 ID(在我的情况下,它只是“1”),我不想再次复制它,因为这会引发错误。
我可以这样写:
IF NOT EXISTS(SELECT 1 FROM Table2 WHERE Id=1)
INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1
ELSE
INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 WHERE Table1.Id<>1
在不使用IF - ELSE 的情况下,有没有更好的方法来做到这一点?我想避免基于某些条件的两个INSERT INTO-SELECT 语句。
【问题讨论】:
标签: sql sql-server tsql sql-insert