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

Posted

技术标签:

【中文标题】如何根据MySQL中的另一列有条件地选择列【英文标题】:How to select column conditionally according to another one in MySQL 【发布时间】:2015-08-26 17:14:43 【问题描述】:

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

userid  name  email  system_photo  personal_photo  photo_select

photo_select 可以有两个值(1 或 0)。我想根据photo_select的值选择system_photo或者personal_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' && 1 !== '1' ***.com/questions/5951157/… 【参考方案1】:

您可以执行以下操作:

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

您可以在查询中使用 if 语句,如果它是真或假,您将选择 1 列或其他....然后最后您将其转换为您想要调用的任何内容......照片

【讨论】:

如果只需要选择一列,为什么要使用 *? 所有答案都有效。因为这个答案是第一个,所以值得接受。【参考方案2】:
SELECT IF(photo_select = 1, personal_photo, system_photo) as photo from users

【讨论】:

【参考方案3】:

试试这个

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

【讨论】:

以上是关于如何根据MySQL中的另一列有条件地选择列的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 mySQL 中的另一列选择一列?

如何根据另一列中的单元格值有条件地填充熊猫列

根据熊猫中的另一个列值有条件地填充列值

如何根据python中的另一列自动添加日期?

如何根据 PySpark 数据框的另一列中的值修改列? F.当边缘情况

如何根据R中的另一列获取一列的平均值