2015-04-01 3 views
1

Мне нужно проверить, существует ли значение столбца для записи, и если это так вставить дубликат этой записи, с одним из обновленных полей.Вставьте новую строку, если значение присутствует в столбце

Поля для моей таблицы IncCodes являются являются символы:

IncomeCode, 
Description, 
Location, 
CostCentre, 
NewIncomeCode 

У меня уже есть команда SQL, которая обновляет все IncomeCodes от NewIncomeCode и очищает колонку 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 <> '') 

Любые советы, которые очень ценятся. Я вижу похожие вопросы о вставке на основе критериев, но ничего конкретно, что мне нужно.

Заранее спасибо.

+1

Прокомментируйте свое имя РСУБД (SQL Server/MySQL/Oracle). Я бы предложил привести некоторые примерные данные и ожидаемый результат в вашем вопросе. –

+0

Ошибка синтаксиса, вместо этого «INSERT INTO IncCodes SELECT ...» – jarlh

+0

Спасибо за исправления и советы ребятам. Я отметил его Sybase SQL и отметил ответ – notidaho

ответ

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

Никогда не записывайте вставку без указания columsn, который является антипаттерном SQL, и может вызвать множество проблем с целостностью данных.

+0

Нуль должен был быть «на этом», поэтому я дал ответ Владу. Спасибо хоть! – notidaho

Смежные вопросы