2017-06-18 156 views
2

我想從MySql數據庫中選擇一個用戶配置文件。我還有另一張包含用戶電話的表格,因爲他們可以有多個電話。在手機表中,我有一個名爲main的字段,表示它是主要聯繫人。MySql選擇值,如果confiting匹配或選擇第一個如果不匹配

因此,用戶可能有3部手機(甚至更多),但只有1部可以作爲主手機。當我選擇用戶配置文件時,我需要驗證是否有任何電話標記爲主電話並選擇此項。如果沒有電話標記爲main,那麼我從列表中選擇第一個。

這是我的電話表:

id | id_user | main | phone 
15 | 23  | 0 | 99999999999 
16 | 23  | 1 | 88888888888 
17 | 27  | 0 | 66666666666 
18 | 27  | 0 | 77777777777 

所以在上面的例子中,我需要選擇兩個用戶(23和27),用戶23需要有手機88888888888和用戶27的需求有電話66666666666

但我不知道如何做到這一點,我是強麥只選擇第一寄存器,這是我到目前爲止的代碼:

SELECT 
    a.id, a.f_name, a.l_name, a.code, 
    ( 
     SELECT phone FROM tb_phone WHERE id_user = a.id ORDER BY id LIMIT 1 
    ) as 'phone' 
FROM tb_user a 
WHERE a.active = 1 

回答

3

您的查詢接近:

SELECT u.* 
     (SELECT p.phone 
     FROM tb_phone p 
     WHERE p.id_user = u.id 
     ORDER BY p.main DESC, p.id 
     LIMIT 1 
     ) as phone 
FROM tb_user u 
WHERE u.active = 1; 

換句話說,您需要將p.main加入ORDER BY

此外,我更改了表別名,因此它們是表名的縮寫。這使得查詢更容易遵循。

+0

這很有趣,它比我更容易。感謝你的回答! – celsomtrindade

相關問題