2015-06-11 44 views
4

我有一個表(用戶),其具有列如下所示:如何選擇列有條件accroding到另一個在MySQL

userid name email system_photo personal_photo photo_select 

photo_select可以有兩個值(1或0)。我想根據photo_select的值選擇system_photopersonal_photo。如果photo_select1則應該選擇personal_photo,否則如果photo_select0則應該選擇system_photo

system_photo價值來自另一項服務。如果用戶不喜歡那張照片,他/她可以上傳一張新照片。在另一天,他/她將能夠在兩張照片之間切換。

我首先選定所有三列,並在我的代碼視圖部分,我已經寫了

if($user->photo_select === '0') 
    echo $user->system_photo; 
else if($user->photo_select === '1') 
    echo $user->personal_photo; 

可是轉念一想,這是一個昂貴的方式。我決定在模型部分只選擇一個照片欄(system_photopersonal_photo)。我的MySQL SELECT聲明應該如何實現這一點?

+0

'0!== '0'' &&'1!==' 1'' –

+2

http://stackoverflow.com/questions/5951157/if-in-select-statement-choose-output-value-based-on-column-values –

回答

5

,你可以做到以下幾點:

select *, if(photo_select = 0, system_photo,personal_photo) as photo 
from users 

如果基於你的查詢語句,你可以使用它,如果真或假,你會選擇1列或其他....然後最後你將它轉換爲任何你想也許叫它.....照片

+2

爲什麼使用*如果只有一列需要被選中? – Deep

+0

所有答案都適用。因爲這個答案是第一個,它值得接受。 – zkanoca

4
SELECT IF(photo_select = 1, personal_photo, system_photo) as photo from users 
1

試試這個

SELECT CASE 
    WHEN photo_select=1 then personal_photo 
    ELSE system_photo 
END AS display_photo from users 
where userid=1 
相關問題