我有以下两个表:Table1----------ID Name1 A2 B3 CTable2----------ID Name1 Z我需要从数据插入Table1到Table2。我可以使用以下语法:INSERT INTO Table2(Id, Name) SELECT Id, Name FROM Table1但是,在我的情况下,可能存在重复的ID Table2(在我的情况下,它只是“ 1”),我不想再次复制该ID ,因为这会引发错误。我可以这样写:IF NOT EXISTS(SELECT 1 FROM Table2 WHERE Id=1)INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 ELSEINSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 WHERE Table1.Id<>1有没有一种更好的方法可以不使用IF - ELSE?我想避免INSERT INTO-SELECT基于某些条件的两个语句。
3 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
在MySQL中,您可以执行以下操作:
INSERT IGNORE INTO Table2(Id, Name) SELECT Id, Name FROM Table1
SQL Server是否有类似的东西?
ABOUTYOU
TA贡献1812条经验 获得超5个赞
我使用IanC建议ignore Duplicates的唯一索引来解决类似问题,使用Option创建索引WITH IGNORE_DUP_KEY
In backward compatible syntax
, WITH IGNORE_DUP_KEY is equivalent to WITH IGNORE_DUP_KEY = ON.
- 3 回答
- 0 关注
- 1002 浏览
添加回答
举报
0/150
提交
取消