Sql 如果列中存在值,则插入新行
我需要检查记录是否存在列值,如果存在,则插入该记录的副本,并更新其中一个字段 “我的IncCodes”表的字段为字符:Sql 如果列中存在值,则插入新行,sql,database,sybase,Sql,Database,Sybase,我需要检查记录是否存在列值,如果存在,则插入该记录的副本,并更新其中一个字段 “我的IncCodes”表的字段为字符: IncomeCode, Description, Location, CostCentre, NewIncomeCode 我已经有了一个SQL命令,该命令更新了NewIncomeCode中的所有IncomeCodes,并清除了存在的NewIncomeCode列: UPDATE IncCodes SET IncomeCode = NewIncomeCode ,NewIn
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的类似问题,但没有具体说明我需要什么
提前谢谢
INSERT INTO IncCodes (IncomeCode,Description,Location,CostCentre,NewIncomeCode)
SELECT NewIncomeCode
,Description
,Location
,CostCentre
,NULL
FROM IncCodes
WHERE NewIncomeCode <> ''
如果未指定ColumnSN,则切勿编写插入,因为它是SQL反模式,可能会导致大量数据完整性问题。请标记您的RDBMS名称SQL Server/MySQL/Oracle。我建议在您的问题中给出一些示例数据和预期输出。语法错误,请改为插入IncCodes SELECT…感谢各位的更正和提示。我给它贴上了Sybase SQL的标签,并将答案标记为空,所以我给了Vlad答案。谢谢你!
INSERT IGNORE INTO IncCodes
(IncomeCode, Description, Location, CostCentre, NewIncomeCode)
SELECT
NewIncomeCode, Description, Location, CostCentre, ''
FROM IncCodes
WHERE NewIncomeCode <> '' AND Location = Location1
;