考慮我有一個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