考虑我有一个user
表,我有三列mobilePhone
,homePhone
和workPhone
...SQL查询来得到这样的结果
我必须选择homePhone
为每个用户作为第一PREF
如果没有价值
我会去mobilePhone
和
如果它
没有价值 我会去workPhone
....
任何建议如何在MySQL中可完成..
考虑我有一个user
表,我有三列mobilePhone
,homePhone
和workPhone
...SQL查询来得到这样的结果
我必须选择homePhone
为每个用户作为第一PREF
如果没有价值
我会去mobilePhone
和
如果它
没有价值 我会去workPhone
....
任何建议如何在MySQL中可完成..
尝试使用SQL Server COALESCE (Transact-SQL),
返回第一个非空表达式 之间的论点。
也是一样的MySql COALESCE(value,...)
如果没有 非NULL值返回 的第一个非NULL值的列表,或NULL。
喜欢的东西
SELECT COALESCE(homePhone, mobilePhone, workPhone) ContactPhone
FROM Users
你想要Coalesce
函数返回第一个非空值:
Select Coalesce(homephone, mobilephone, workphone) Phone
From `user`
合并并在MySQL存在。它是ANSI定义的函数。
@Thomas和@astander在mysql中对不起 – bala3569 2010-04-16 04:40:36
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
@astander在mysql中非常抱歉... – bala3569 2010-04-16 04:41:05
Mysql还提供了COALESCE – 2010-04-16 04:43:25