假设我有一个user表,我有三个列mobilePhone、homePhone和workPhone...
我必须为每个用户选择homePhone作为首选
如果没有值
**我会选择mobilePhone和
如果它没有价值,我就不知道了
现在,我会去找workPhone……
有什么建议可以在mysql中实现吗?
发布于 2010-04-16 12:39:20
尝试使用Sql Server COALESCE (Transact-SQL),
返回其参数中的第一个非空表达式。
MySql COALESCE(value,...) 也是如此
返回列表中的第一个非空值,如果没有非空值,则返回NULL。
就像这样
SELECT COALESCE(homePhone, mobilePhone, workPhone) ContactPhone
FROM Users发布于 2010-04-16 12:40:14
您需要返回第一个非空值的Coalesce函数:
Select Coalesce(homephone, mobilephone, workphone) Phone
From `user`MySQL中确实存在Coalesce。它是ANSI定义的函数。
发布于 2010-04-16 12:41:05
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 = ''https://stackoverflow.com/questions/2650638
复制相似问题