gpt4 book ai didi

sql - 使用 SQL Server 2008 防止插入重复行

转载 作者:行者123 更新时间:2023-12-02 05:33:44 25 4
gpt4 key购买 nike

我正在尝试将一些数据从一个表插入到另一个表中,但我想防止插入重复的行。我目前有以下查询:

INSERT INTO Table1
(
Table1Col1,
Table1Col2,
Table1Col3,
Table1Col4,
Table1Col5
)
SELECT
Table2Col1,
Table2Col2 = constant1,
Table2Col3 = constant2,
Table2Col4 = constant3,
Table2Col5 = constant4
FROM Table2
WHERE
Condition1 = constant5
AND
Condition2 = constant6
AND
Condition3 = constant7
AND
Condition4 LIKE '%constant8%'

我不知道的是,我试图从 Table2 插入到 Table1 的行可能已经存在,我想防止这种可能的重复发生并跳过插入,只是继续插入下一个唯一行。

我已经看到我可以使用 WHERE NOT EXISTS 子句和 INTERSECT 关键字的使用,但我不完全理解如何将它应用于我的特定查询,因为我只想使用 Table2 中的一些选定数据,然后要插入到 Table1 中的一些常量值。

编辑:

我应该补充一点,TableCol2 到 TableCol5 的列实际上并不存在于结果集中,我只是将这些列与返回的 Table2Col1 一起填充。

最佳答案

由于您使用的是 SQL Server 2008,您可以使用 merge声明。

您可以根据键轻松检查行是否存在

像这样:

merge TableMain  AS target
using TableA as source
ON <join tables here>
WHEN MATCHED THEN <update>
WHEN NOT MATCHED BY TARGET <Insert>
WHEN NOT MATCHED BY SOURCE <delete>

关于sql - 使用 SQL Server 2008 防止插入重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11985328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com