获取此结果的SQL查询

时间:2010-04-16 04:37:09

标签: mysql select

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

我必须为每个用户选择homePhone作为第一个帖子 如果没有价值 我会去mobilePhone
如果没有价值的话 我会去workPhone ....

有任何建议如何在mysql中完成..

5 个答案:

答案 0 :(得分:7)

尝试使用Sql Server COALESCE (Transact-SQL)

  

返回第一个非空表达式   在其论点中。

MySql COALESCE(value,...)

也是如此
  

返回第一个非NULL值   列表,如果没有则为NULL   非NULL值。

这样的东西
SELECT  COALESCE(homePhone, mobilePhone, workPhone) ContactPhone
FROM    Users

答案 1 :(得分:3)

您希望Coalesce函数返回第一个非空值:

Select Coalesce(homephone, mobilephone, workphone) Phone
From `user`

Coalesce确实存在于MySQL中。它是ANSI定义的函数。

Coalesce function (MySQL).

答案 2 :(得分:0)

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 = ''

答案 3 :(得分:0)

您可以使用嵌套的IF语句或CASE或使用业务逻辑层执行此作业

答案 4 :(得分:0)

另一种解决方案是使用以下SQL:

ISNULL(ISNULL(HomePhone,MobilePhone),WorkPhone) AS Phone

谢谢, 尼尔默尔