考虑我有一个user
表,我有三列mobilePhone
,homePhone
和workPhone
......
我必须为每个用户选择homePhone
作为第一个帖子
如果没有价值
我会去mobilePhone
和
如果没有价值的话
我会去workPhone
....
有任何建议如何在mysql中完成..
答案 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定义的函数。
答案 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
谢谢, 尼尔默尔