我需要检查一个记录是否存在一个列值,如果是的话,插入一个该记录的副本,其中一个字段被更新。
inccodes表的字段是字符:

IncomeCode,
Description,
Location,
CostCentre,
NewIncomeCode

我已经有一个sql命令,它从newincomecode更新所有incomecode,并清除newincomecode列(如果存在):
UPDATE IncCodes
SET IncomeCode = NewIncomeCode
   ,NewIncomeCode = ''
WHERE NewIncomeCode <> ''
  AND Location = Location1

但是,我需要一个命令,这个命令除了不更新incomecode字段之外,还可以创建一个重复的记录,其中incomecode由newincomecode字段更新。类似于这个伪sql:
INSERT INTO IncCodes
VALUES (SELECT NewIncomeCode
              ,Description
              ,Location
              ,CostCentre
              ,NULL
        FROM IncCodes
        WHERE NewIncomeCode <> '')

任何建议都非常感谢。我可以根据标准看到关于insert的类似问题,但没有什么特别需要的。
提前谢谢。

最佳答案

INSERT IGNORE INTO IncCodes
    (IncomeCode, Description, Location, CostCentre, NewIncomeCode)
SELECT
    NewIncomeCode, Description, Location, CostCentre, ''
FROM IncCodes
WHERE NewIncomeCode <> '' AND Location = Location1
;

10-08 19:44