我需要检查记录是否存在列值,如果是,则插入该记录的副本,并更新其中一个字段。
我的IncCodes表的字段是字符:
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 <> '')
任何建议都非常感谢。我可以根据标准看到有关插入的类似问题,但没有具体说明我需要的内容。
提前致谢。
答案 0 :(得分:2)
INSERT INTO IncCodes (IncomeCode,Description,Location,CostCentre,NewIncomeCode)
SELECT NewIncomeCode
,Description
,Location
,CostCentre
,NULL
FROM IncCodes
WHERE NewIncomeCode <> ''
永远不要在没有指定作为SQL反模式的列的情况下编写插入,并且可能导致许多数据完整性问题。
答案 1 :(得分:1)
INSERT IGNORE INTO IncCodes
(IncomeCode, Description, Location, CostCentre, NewIncomeCode)
SELECT
NewIncomeCode, Description, Location, CostCentre, ''
FROM IncCodes
WHERE NewIncomeCode <> '' AND Location = Location1
;