繁体   English   中英

获取此结果的SQL查询

[英]Sql query to get this result

考虑我有一个user表,我有三列mobilePhonehomePhoneworkPhone ...

我必须为每个用户选择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定义的函数。

合并功能(MySQL)。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM