[英]Sql query to get this result
考虑我有一个user
表,我有三列mobilePhone
, homePhone
和workPhone
...
我必须为每个用户选择homePhone
作为第一个pref
如果没有价值
我会选择mobilePhone
和
如果它没有价值
我会去workPhone
....
有任何建议如何在mysql中完成..
尝试使用Sql Server COALESCE(Transact-SQL) ,
返回其参数中的第一个非空表达式。
MySql COALESCE也是如此(值,......)
返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL。
就像是
SELECT COALESCE(homePhone, mobilePhone, workPhone) ContactPhone
FROM Users
您需要Coalesce
函数,它返回第一个非null值:
Select Coalesce(homephone, mobilephone, workphone) Phone
From `user`
Coalesce确实存在于MySQL中。 它是ANSI定义的函数。
SELECT user, homePhone
FROM user
WHERE homePhone != ''
UNION
SELECT user, mobilePhone
FROM user
WHERE homePhone = '' AND mobilePhone != ''
UNION
SELECT user, workPhone
FROM user
WHERE homePhone = '' AND mobilePhone = ''
您可以使用嵌套的IF
语句或CASE
,也可以使用业务逻辑层执行此作业
另一种解决方案是使用以下SQL:
ISNULL(ISNULL(HomePhone,MobilePhone),WorkPhone) AS Phone
谢谢,Nirmal
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.