我有一个5列的表格。
如果5列中的3列与任何现有记录匹配,即其他2列的值不同或缺失,我不希望发生INSERT。
这可能吗?如果可以,怎么办?
我正在使用SQL Server
答案 0 :(得分:0)
如果我对您的理解正确,那么计算匹配数是一种可能的方法:
输入:
CREATE TABLE #Data (
Column1 varchar(10),
Column2 varchar(10),
Column3 varchar(10),
Column4 varchar(10),
Column5 varchar(10)
)
INSERT INTO #Data
(Column1, Column2, Column3, Column4, Column5)
VALUES
('Value1', 'Value2', 'Value3', 'Value4', 'Value5'),
('alue1', 'Value2', 'Value3', 'alue4', 'Value'),
('alue1', 'Value2', 'Value3', 'Value4', 'Value5'),
('alue1', 'Value2', 'Value3', 'Value4', 'Value5'),
('Value1', 'Value2', 'Value3', 'Value4', 'Value5')
声明:
-- New values
DECLARE @value1 varchar(10)
DECLARE @value2 varchar(10)
DECLARE @value3 varchar(10)
DECLARE @value4 varchar(10)
DECLARE @value5 varchar(10)
SET @value1 = 'Value1'
SET @value2 = 'Value2'
SET @value3 = 'Value3'
SET @value4 = 'Value4'
SET @value5 = 'Value5'
-- Statement
IF NOT EXISTS (
SELECT *
FROM #Data
WHERE (
CASE WHEN Column1 = @value1 THEN 1 ELSE 0 END +
CASE WHEN Column2 = @value2 THEN 1 ELSE 0 END +
CASE WHEN Column3 = @value3 THEN 1 ELSE 0 END +
CASE WHEN Column4 = @value4 THEN 1 ELSE 0 END +
CASE WHEN Column5 = @value5 THEN 1 ELSE 0 END
) >= 3
)
INSERT INTO #Data
(Column1, Column2, Column3, Column4, Column5)
VALUES
(@Value1, @Value2, @Value3, @Value4, @Value5)