我正在尝试运行追加查询,但只有在没有值存在的情况下才能运行,以避免重复。
我听说你可以用Where子句做到这一点,但不知道如何实现它,因为我到目前为止所尝试的(见下面的代码)并没有真正给我正确的结果。
需要检查Saneringsmetodekode中是否已存在值,如果有,则不应执行任何操作。
INSERT INTO NySaneringsData ( DelledningsID, SaneringsmetodeKode )
SELECT SaneringsprojektImport.DelledningsID, SaneringsprojektImport.SaneringsmetodeKode
FROM NySaneringsData RIGHT JOIN SaneringsprojektImport ON NySaneringsData.DelledningsID = SaneringsprojektImport.DelledningsID
WHERE (((SaneringsprojektImport.SaneringsmetodeKode) Is Not Null) AND ((Exists (SELECT * FROM NySaneringsData WHERE NySaneringsData.SaneringsmetodeKode = SaneringsprojektImport.SaneringsmetodeKode))=False))
ORDER BY SaneringsprojektImport.DelledningsID;
非常感谢任何帮助。
答案 0 :(得分:2)
使用这种结构:
INSERT INTO
SELECT
FROM
WHERE NOT EXISTS
在stackoverflow上提到这个类似的问题:
Insert INTO NOT EXISTS SQL access
您可以删除ORDER BY,因为它不相关(表格本质上没有排序)。
根据您的输入,它是SaneringsmetodeKode和DelledningsID的组合,可以唯一标识您的记录。所以在子查询中你应该有两个条件,一个在DelledningsID上,另一个在SaneringsmetodeKode上。 试试这个:
INSERT INTO NySaneringsData (DelledningsID, SaneringsmetodeKode )
SELECT SaneringsprojektImport.DelledningsID, SaneringsprojektImport.SaneringsmetodeKode
FROM SaneringsprojektImport
WHERE NOT EXISTS
(
SELECT *
FROM NySaneringsData
WHERE NySaneringsData.SaneringsmetodeKode = SaneringsprojektImport.SaneringsmetodeKode
AND NySaneringsData.DelledningsID = SaneringsprojektImport.DelledningsID
);
答案 1 :(得分:1)
为什么不
SELECT
CASE
WHEN VALUE1 = VALUE2 THEN RESULT_VALUE1
WHEN VALUE1 = VALUE3 THEN RESULT_VALUE2
ELSE RESULT_VALUE3
END as DelledningID
WHERE xxxx
即使在WHERE,ORER或GROUP BY子句中也可以使用CASE。
但是,查看查询,您是否还在寻找类似UPSERT的查询?
此致
橡树
答案 2 :(得分:1)
我没有尝试过访问,但这是标准的sql,应该可以工作:
INSERT INTO NySaneringsData ( DelledningsID, SaneringsmetodeKode )
SELECT DelledningsID, SaneringsmetodeKode
FROM SaneringsprojektImport WHERE DelledningsID NOT IN
(SELECT DelledningsID FROM NySaneringsData)
HTH
乔纳森
答案 3 :(得分:1)
试试这个:
if (Select ID from table1 Where Code = 'Something') IS NULL
INSERT INTO table1(ID, Code, Description)
Values (.., 'SomeCode', 'Some Description')
OR
if (Select ID from table1 Where Code = 'Something') IS NULL
INSERT INTO table1(ID, Code, Description)
Select ID, Code, Description form table2
where SomeCondition