>我有一个表(用户),其中包含如下列:
userid name email system_photo personal_photo photo_select
photo_select
可以有两个值(1 或 0)。我想根据photo_select
值选择system_photo
或personal_photo
。如果photo_select
1
则应选择personal_photo
,否则如果photo_select
0
则应选择system_photo
。
system_photo
值来自另一个服务。如果用户不喜欢该照片,他/她可以上传一张新照片。在另一天,他/她将能够在两张照片之间切换。
首先选择了所有三列,在我的代码的视图部分,我写了
if($user->photo_select === '0')
echo $user->system_photo;
else if($user->photo_select === '1')
echo $user->personal_photo;
但后来我认为这是一种昂贵的方式。我决定在模型部分只选择一个照片列(system_photo
或personal_photo
)。我的MySQL SELECT
语句应该是什么来实现这一点?
您可以执行以下操作:
select *, if(photo_select = 0, system_photo,personal_photo) as photo
from users
您可以在查询中使用 if 语句,如果它是真还是假,您将选择 1 列或另一列。然后最后你把它塑造成你想怎么称呼它......相片
SELECT IF(photo_select = 1, personal_photo, system_photo) as photo from users
试试这个
SELECT CASE
WHEN photo_select=1 then personal_photo
ELSE system_photo
END AS display_photo from users
where userid=1