Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用两个潜在列中的值更新列_Mysql_Sql_Replace_Set_Sql Update - Fatal编程技术网

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

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

我有3个不同的电话号码栏,我需要在我的表中修复。我的目标是将phone(如果为空或null)替换为phone2或phone 3的值。我不在乎哪一个,只要是电话号码。我知道如何在一列中实现这一点(请参见下面的代码),但我不知道如何在第三列中使用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    

如果有任何建议,我将不胜感激。我真的不想运行两个不同的查询来处理
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 = ''