使用If When的SQL Update语句

4
我试图更新一个列,如果它为空,则将另一个列的值更新到该列中,但前提是那个列也不为空。如果为空,则使用第三个列来更新第一个列。
以下是一个例子:
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
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

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


1
谢谢,我知道它非常简单,但我以前从未使用过COALESCE(SQL初学者)。 - TripleNad

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接