Mysql 如果字段为空,请选择其他字段
我有一张员工桌Mysql 如果字段为空,请选择其他字段,mysql,Mysql,我有一张员工桌 id int(11) names varchar(120) family_names varchar(100) nickname varchar(100) 还有一张工作人员的桌子 id int(11) personid int(11) titleid int(11) typeid int(11) at_work datetime status int(11) 我的问题是,我需要生成一份报告,在报告中检查谁在工作
id int(11)
names varchar(120)
family_names varchar(100)
nickname varchar(100)
还有一张工作人员的桌子
id int(11)
personid int(11)
titleid int(11)
typeid int(11)
at_work datetime
status int(11)
我的问题是,我需要生成一份报告,在报告中检查谁在工作,并显示姓名、姓氏和头衔。由于人们是用昵称来称呼的,我需要首先检查昵称是否存在,所以我在这个网站上找到了这个例子
SELECT IF(LENGTH(nickname)>0, nickname, names) FROM staff_list
我将获得昵称或姓名,但这并不能解决我的请求,因为我需要在工作表中搜索mu who_is_,然后找到工作人员并创建该列表
是否可以在select中执行select以获取我需要的三个字段
昵称/姓名、姓氏、头衔
过了一段时间,我想出了怎么做
我找到了解决方案,谢谢你的发帖。这就是我最后要做的
SELECT p.id AS ID,
IF(LENGTH(p.nickname)>0, p.nickname, p.names) AS 'Names/Nickname',
p.family_names AS 'Family name',
r.rank AS 'Rank'
FROM atworklist AS who
LEFT JOIN stafflist as p on p.id = who.personid
LEFT JOIN title AS r ON r.id = p.titleid
where who.shipid= 2 and who.status in (2,3)
ORDER BY r.sortorder
对我来说很有魅力如果你想去掉空值,你可以使用coalesce
select coalesce(nickname, names) from staff_list
如果要检查空字符串,可以通过以下方式执行:
select case when nickname = '' then names else nickname end from staff_list