2013-04-24 6 views
4

Я пытаюсь обновить один столбец, если он имеет значение null со значениями другого столбца, только если этот столбец также не является нулевым. Если это нуль, а затем обновить столбец 1 с колонкой 3Заявление об обновлении SQL с использованием If When

Вот пример:

day_phone  sec_phone  alt_phone  cell_phone 
555-555-1212 NULL   NULL   NULL 
NULL   555-555-1234 NULL   NULL 
NULL   NULL   555-555-4321 NULL 
NULL   NULL   NULL   555-555-5678 
NULL   555-123-4567 555-867-5309 NULL

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

day_phone  sec_phone  alt_phone  cell_phone 
555-555-1212 NULL   NULL   NULL 
555-555-1234 555-555-1234 NULL   NULL 
555-555-4321 NULL   555-555-4321 NULL 
555-555-5678 NULL   NULL   555-555-5678 
555-123-4567 555-123-4567 555-867-5309 NULL

ответ

6

просто использовать COALESCE

UPDATE tableName 
SET  day_phone = COALESCE(day_phone, sec_phone, alt_phone, cell_phone) 

, если вы хотите обновить только если day_phone имеет нулевое значение, то вы можете добавить дополнительные состояние,

UPDATE tableName 
SET  day_phone = COALESCE(sec_phone, alt_phone, cell_phone) 
WHERE day_phone IS NULL 

это сделает обновление более быстрым, так как обновляются только выбранные строки. Гораздо быстрее, если у вас есть индекс в столбце day_phone.

+1

Спасибо, я знал, что это было довольно просто, я просто никогда не использовал COALESCE до (начинающий SQL). – TripleNad

+0

приветствуется ': D' –

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