如何根据MySQL中的另一个条件有条件地选择列

时间:2015-06-11 06:44:40

标签: php mysql

我有一个表(用户),其中包含以下列:

userid  name  email  system_photo  personal_photo  photo_select

photo_select可以有两个值(1或0)。我想根据system_photo值选择personal_photophoto_select。如果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语句应该是什么来实现这个目标?

3 个答案:

答案 0 :(得分:5)

您可以执行以下操作:

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

你可以在你的查询中使用if语句,如果它的真或假,你将选择1列或另一个....然后最后你把它转换为你想要的任何可能.....照片

答案 1 :(得分:4)

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

答案 2 :(得分:1)

试试这个

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