我正在尝试更新一个列,如果它的列为null,则仅当该列不为空时才使用另一列的值。如果为null,则使用第3列更新第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
答案 0 :(得分: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 :(得分:0)
最简单的方法是一系列更新语句。
UPDATE table_name
SET column1=column2
WHERE column1 IS NULL
AND column2 IS NOT NULL
重复第3,4列等...按优先顺序运行。