这里我试图将一些数据从表列迁移到一个全新的表,其中目标列具有唯一约束。基本上我是想:
INSERT INTO FooTable VALUES (SELECT BarTable.Code FROM BarTable)
FooTable只有2列:ID和Code(具有唯一约束的列)。
但是在BarTable.Code上,可能有一些重复的值我需要处理它们并使它们适合新约束(可能是:Code = Code + 1或者其他)。
关于如何做到这一点的任何想法?
我正在使用MS SQL Server 2008 R2。
提前谢谢。
答案 0 :(得分:1)
您可以使用MERGE命令,并在代码匹配时插入不同的记录。
以下是基于您的方案的示例:
MERGE FooTable AS T
USING BarTable AS S
ON (T.Code = S.Code)
WHEN NOT MATCHED BY TARGET
THEN INSERT(Code) VALUES(S.Code)
WHEN MATCHED
THEN INSERT(Code) VALUES(S.Code+1)
答案 1 :(得分:0)
您可以使用Not Exists
INSERT INTO FooTable VALUES (SELECT distinct br.Code FROM BarTable br where NOT EXISTS(SELECT * FROM FooTable bs where br.code=bs.code ) )