2015-06-11 21 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 
相关问题