【问题标题】:Checking values with mass inserts使用质量插入检查值
【发布时间】:2021-04-14 00:31:17
【问题描述】:

目前在我的应用程序中我做了一个

INSERT INTO X (X1, X2)
VALUES ('Placeholder1','Placeholder'),
        ...
        ...

插入多个值时用于我的数据库。

但是,其中一些可能最终会重复到 X 表中,所以目前我只使用 IGNORE_DUP_KEY,但我知道 IGNORE_DUP_KEY 往往被看不起,所以我想知道是否有大量插入,同时还有在单个查询中单独检查重复项。

【问题讨论】:

  • 无论如何,您可能不应该从VALUES 进行大规模插入,而是使用临时表或表变量或 TVP

标签: sql-server database tsql


【解决方案1】:

您可以在查询中合并not exists

INSERT INTO X (X1, X2)
    SELECT v.*
    FROM (VALUES ('Placeholder1','Placeholder'),
                  ...
                  ...
         ) v(X1, X2)
    WHERE NOT EXISTS (SELECT 1
                      FROM X
                      WHERE X.X1 = v.X1 AND X.X2 = v.X2
                     );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多