4

我试图用另一列的值更新一列,如果该列也不为空。如果为空,则用第 3 列更新第 1 列

这是一个例子:

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

所以我想要完成的是更新所有记录,以便 day_phone 最终得到一个结果,如果多列中有记录,最好是它找到的第一个。最终结果应如下所示:

day_phone sec_phone alt_phone cell_phone
555-555-1212 空 空 空
555-555-1234 555-555-1234 无 无
555-555-4321 空 555-555-4321 空
555-555-5678 空 空 555-555-5678
555-123-4567 555-123-4567 555-867-5309 空
4

2 回答 2

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

这将使更新更快,因为只有选定的行被更新。如果您在 column 上有索引,则速度会更快day_phone

于 2013-04-24T13:35:05.097 回答
0

最简单的方法是一系列更新语句。

UPDATE table_name
SET column1=column2
WHERE column1 IS NULL
AND column2 IS NOT NULL

重复第 3、4 列等...按优先顺序运行。

http://www.w3schools.com/sql/sql_null_values.asp

http://www.w3schools.com/sql/sql_update.asp

于 2013-04-24T13:39:41.530 回答