在非主键上使用ignore_duplicate

时间:2018-02-16 12:21:30

标签: sql sql-server tsql

我有桌子:

   ID (identity, PK), TaskNr, OfferNr

我想插入忽略语句,但遗憾的是它没有在MSSQL上工作,因此有一个IGNORE_DUP开关。但我需要使用TaskNr列检查重复项。有没有机会这样做?

编辑:

示例数据:

ID (identity, PK), TaskNr, OfferNr
1                  BP1234   XAS
2                  BD123    JFRT
3                  1122AH   JDA33
4                  22345_a  MD_3

尝试做:

insert ignore into Sample_table (TaskNr, OfferNr) values (BP1234, DFD,)

应忽略该行并转到insert语句的下一个值。 ID是自动增量的,但应使用TaskNr列检查唯一值。

2 个答案:

答案 0 :(得分:1)

您可以尝试两种选择:

答案 1 :(得分:1)

SQL Server不支持insert ignore。那是MySQL的功能。

你可以做你想做的事:

insert ignore into Sample_table (TaskNr, OfferNr)
    select x.TaskNr, x.OfferNr
    from (select 'BP1234' as TaskNr, 'DFD' as OfferNr) x
    where not exists (select 1 
                      from Sample_Table st
                      where st.TaskNr = x.TaskNr and st.OfferNr = x.OfferNr
                     );