我可以选择临时表(_tmp_mj)中的记录(序列号)。我想使用此临时表将项目插入另一个表。
我正在使用的代码如下所示。它已成功完成,但似乎没有更新任何记录。
IF NOT EXISTS(SELECT serialnumber FROM _tmp_mj WHERE serialnumber = _tmp_mj.serialnumber)
INSERT INTO CPAR
(parametercategory, parametername, priority)
VALUES
('Constituent Code','Major Donor','Normal')
我想要实现的是将相关值添加到CPAR表中(如果这些值尚不存在),而仅适用于_TMP_MJ表中保留的SERIALNUMBER。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
您可以使用INSERT ... SELECT ...
,使用NOT EXISTS
选择所有尚不存在的序列号。
INSERT INTO cpar
(serialnumber,
parametercategory,
parametername,
priority)
SELECT _tmp_mj.serialnumber,
'Constituent Code',
'Major Donor',
'Normal'
FROM _tmp_mj
WHERE NOT EXISTS (SELECT *
FROM cpar
WHERE cpar.serialnumber = _tmp_mj.serialnumber);
答案 1 :(得分:0)
INSERT
创建一条新记录。如果我正确阅读了您的问题,则您似乎想执行UPDATE
。
在以下情况下,这将使用指定的值更新枚举列:
1)该列当前为“ NULL”(否则它将保留那里的值)并且
2)在工作表中找到基表的序列号。
UPDATE c
SET
c.parametercategory = COALESCE(c.parametercategory,'Constituent Code'),
c.parametername = COALESCE(c.parametername,'Major Donor'),
c.priority = COALESCE(c.priority,'Normal')
FROM
CPAR AS c
JOIN
_tmp_mj AS t
ON t.serialnumber = c.serialnumber