如果列中存在值,则插入新行

Insert new row if value present in column

我需要检查记录是否存在列值,如果存在,则插入该记录的副本,其中一个字段已更新。

我的 IncCodes table 的字段是字符:

IncomeCode,
Description,
Location,
CostCentre,
NewIncomeCode

我已经有一个 SQL 命令,它更新来自 NewIncomeCode 的所有 IncomeCodes 并清除存在的 NewIncomeCode 列:

UPDATE IncCodes 
SET IncomeCode = NewIncomeCode
   ,NewIncomeCode = ''
WHERE NewIncomeCode <> ''
  AND Location = Location1

但是我需要执行相同操作的命令,除了不是更新 IncomeCode 字段,而是使用由 NewIncomeCode 字段更新的 IncomeCode 创建一个重复记录。像这样的伪 sql:

INSERT INTO IncCodes
VALUES (SELECT NewIncomeCode
              ,Description
              ,Location
              ,CostCentre
              ,NULL
        FROM IncCodes
        WHERE NewIncomeCode <> '')

非常感谢任何建议。我可以看到关于基于条件插入的类似问题,但没有什么特别是我需要的。

提前致谢。

INSERT INTO IncCodes (IncomeCode,Description,Location,CostCentre,NewIncomeCode)
SELECT NewIncomeCode
              ,Description
              ,Location
              ,CostCentre
              ,NULL
        FROM IncCodes
        WHERE NewIncomeCode <> ''

切勿在未指定属于 SQL 反模式的列的情况下编写插入,这可能会导致大量数据完整性问题。

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