2013-04-24 138 views
4

我想更新一列,如果它爲null與另一列的值只有如果該列也不爲空。如果爲空,然後用第3列SQL更新聲明使用如果當

這裏更新列1是一個例子:

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 2013-04-24 13:51:03

+0

不客氣':D' – 2013-04-24 13:51:18