Mysql 使用两个潜在列中的值更新列
我有3个不同的电话号码栏,我需要在我的表中修复。我的目标是将phone(如果为空或null)替换为phone2或phone 3的值。我不在乎哪一个,只要是电话号码。我知道如何在一列中实现这一点(请参见下面的代码),但我不知道如何在第三列中使用OR语句。查询和数据如下 原始查询Mysql 使用两个潜在列中的值更新列,mysql,sql,replace,set,sql-update,Mysql,Sql,Replace,Set,Sql Update,我有3个不同的电话号码栏,我需要在我的表中修复。我的目标是将phone(如果为空或null)替换为phone2或phone 3的值。我不在乎哪一个,只要是电话号码。我知道如何在一列中实现这一点(请参见下面的代码),但我不知道如何在第三列中使用OR语句。查询和数据如下 原始查询 update test.10_master set Phone = phone2 WHERE phone IS NULL OR phone = '' 原始数据 id phone phone2
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
如果有任何建议,我将不胜感激。我真的不想运行两个不同的查询来处理
null
值,您可以使用coalesce()
:
这将使用phone2
或phone3
更新phone
为null的s(第一个非null列获胜)
如果要避免空字符串以及null
s:
update master
set phone = case when phone2 is null or phone2 = '' then phone3 else phone2 end
where phone is null or phone = ''
update master
set phone = case when phone2 is null or phone2 = '' then phone3 else phone2 end
where phone is null or phone = ''