0

我有一张员工桌

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_at_work 表,然后让工作人员在工作并创建该列表。

是否可以在选择中进行选择以获取我需要的三个字段

昵称/姓名、姓氏、头衔

过了一会儿,我想出了如何去做。

我找到了解决方案,感谢发布。这就是我最终要做的。

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

对我来说就像一个魅力

4

1 回答 1

0

如果你想摆脱空值,你可以使用合并。

select coalesce(nickname, names) from staff_list

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce

如果你想检查空字符串,你可以这样做:

 select case when nickname = '' then names else nickname end from staff_list
于 2012-07-27T15:04:29.807 回答