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

zka*_*oca 4 php mysql

我有一个表(用户),其列具有以下列:

userid  name  email  system_photo  personal_photo  photo_select
Run Code Online (Sandbox Code Playgroud)

photo_select可以有两个值(1或0).我想选择system_photopersonal_photo根据photo_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;
Run Code Online (Sandbox Code Playgroud)

但后来我觉得这是一种代价高昂的方式.我决定在模型部分只选择一个照片列(system_photopersonal_photo).我的MySQL SELECT语句应该是什么来实现这一目标?

lau*_*auw 5

你可以做到以下几点:

select *, if(photo_select = 0, system_photo,personal_photo) as photo
from users
Run Code Online (Sandbox Code Playgroud)

您可以在查询中使用if语句,如果它的真或假你将选择1列或另一个....然后最后你把它投成任何你想称之为它.....可能.....

  • 如果只需要选择一列,为什么要使用*? (2认同)