【发布时间】:2022-02-09 05:32:46
【问题描述】:
我需要一些帮助来插入不存在的新数据。
目前我使用这个查询:
INSERT INTO dbo.Table (column1, column2, column3, column4)
SELECT value1, value2, value3, value4
FROM dbo.staginTable
LEFT JOIN dbo.Table AS A ON A.column1 = value1
AND A.column2 = value2
AND A.column3 = value3
AND A.column4 = value4
WHERE A.column1 IS NULL
AND A.column2 IS NULL
AND A.column3 IS NULL
AND A.column4 IS NULL
如果没有变量 (value1, value2, value3, value4)空。
我的问题是它很常见,例如value3 或 value4 或两者都可以为空,在这种情况下,值将被插入
作品:
(value1, value2, value3, value4)
('one', 'two', 'three', 'four')
不起作用:
(value1, value2, value3, value4)
('one', 'two', NULL, 'four')
我知道我可以在 4 列上添加唯一索引来绕过这个问题,或者我可以使用像 insert expect 这样的另一个查询,但我想知道是否可以使用上面的查询或者我需要在查询中更改什么。
感谢您的帮助
【问题讨论】:
-
听起来您需要使用
exists相关性。 -
检查表的 NOT NULL 约束
标签: sql sql-server