用两个潜在列中的值更新列

时间:2020-04-03 00:07:15

标签: mysql sql replace set sql-update

我在表中有3个不同的电话号码列,需要修改。我的目标是用phone2或phone 3的值替换phone(如果为空或为null)。我不在乎哪个是电话号码。我知道如何使用一个列执行此操作(请参见下面的代码),但是无法弄清楚如何对第三列使用OR语句。查询和数据如下。

原始查询

update test.10_master 
set Phone = phone2
WHERE phone IS NULL OR phone = ''

原始数据

id    phone       phone2      phone3
1     1111111111
2                 2222222222        
3                             3333333333
4                 2222222222  3333333333      
5     1111111111  2222222222  

我想看的

id    phone       phone2      phone3
1     1111111111
2     2222222222  2222222222        
3     3333333333              3333333333
4     2222222222  2222222222  3333333333      
5     1111111111  2222222222    

我真的很感谢任何建议。我真的想避免不得不运行两个不同的查询

1 个答案:

答案 0 :(得分:1)

要处理null的值,可以使用coalesce()

update master
set phone = coalesce(phone2, phone3)
where phone is null

这会用phonenull(第一个非空列获胜)更新phone2的{​​{1}}。

如果要避免使用空字符串以及phone3

null