SQL Server:带有条件的INSERT

时间:2016-11-16 02:55:35

标签: sql sql-server sql-server-2005

我想插入我的Files-Favorites表中,只有当我试图传递的值不在那里时。

我试过了:

INSERT INTO [Files-Favorites](fileID,auditorID)  
     VALUES ('1', '34') 
      WHERE (fileID != '1' 
        AND auditorID != '34')

这不起作用。我试图不INSERT重复值。我怎么把它关掉?这适用于Microsoft SQL Server 2005.

谢谢

3 个答案:

答案 0 :(得分:5)

尝试使用,如果不存在

IF NOT EXISTS(SELECT * FROM [Files-Favorites] WHERE fileID = '1' AND auditorID = '34') 
BEGIN 
    INSERT INTO [Files-Favorites](fileID, auditorID) 
    VALUES('1', '34') 
END

答案 1 :(得分:2)

我会使用复合(多列)键而不是检查每个插入

ALTER TABLE [Files-Favorites] ADD CONSTRAINT unique_1 UNIQUE(fileID,auditorID)

答案 2 :(得分:1)

我们可以使用EXISTS和子查询来检查数据是否存在并相应地插入:

INSERT INTO [Files-Favorites](fileID,auditorID) 
SELECT fileID, auditorID FROM (
SELECT '1' fileID,'34' auditorID) t
WHERE NOT EXISTS(SELECT tm.fileID FROM [Files-Favorites] tm 
                 WHERE tm.fileID = t.fileID AND tm.auditorID = t.auditorID)