首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL自联接if null函数

MySQL自联接if null函数
EN

Stack Overflow用户
提问于 2017-02-19 20:50:24
回答 1查看 155关注 0票数 1

我正在通过MySQL版本5.7.17学习,请澄清我下面的疑问。

我有一个表employees,其中包含员工I和相应的经理I,但很少有员工没有经理I,因为他们属于经理角色。

表列是员工id、名字、姓氏、经理id。我设计了下面的自连接查询,它为我提供了具有经理I的员工,但我正在寻找没有经理I(空)的经理(也是员工)的其他详细信息。

代码语言:javascript
复制
SELECT E.EMPLOYEE_ID AS EMP_ID, CONCAT(E.FIRST_NAME,' ',E.LAST_NAME
) AS EMP_NAME, 
M.EMPLOYEE_ID AS MGR_ID
,CONCAT(M.FIRST_NAME,' ',M.LAST_NAME) AS MGR_NAME
FROM EMPLOYEES AS E JOIN EMPLOYEES AS M 
ON (E.MANAGER_ID =M.EMPLOYEE_ID) ORDER BY MGR_ID

我试着在查询中使用IF NULL函数,如下所示,得到下面的错误信息。

错误代码: 1064。您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,了解正确的语法,以便在第2行使用near 'NULL(M.EMPLOYEE_ID,'NO MGR') AS MGR_ID,CONCAT(M.FIRST_NAME,‘',M.LAST_NAME) AS’

代码语言:javascript
复制
SELECT E.EMPLOYEE_ID AS EMP_ID, CONCAT(E.FIRST_NAME,' ',E.LAST_NAME) AS EMP_NAME, 
IF NULL(M.EMPLOYEE_ID,'NO MGR') AS MGR_ID
,CONCAT(M.FIRST_NAME,' ',M.LAST_NAME) AS MGR_NAME
FROM EMPLOYEES AS E JOIN EMPLOYEES AS M 
ON (E.MANAGER_ID =M.EMPLOYEE_ID) ORDER BY MGR_ID
EN

回答 1

Stack Overflow用户

发布于 2017-02-19 20:52:21

您可以使用COALESCE。此外,我认为您需要一个左连接,以便获得那些没有经理的记录:

代码语言:javascript
复制
select E.EMPLOYEE_ID as EMP_ID,
    concat (E.FIRST_NAME,' ',E.LAST_NAME) as EMP_NAME,
    coalesce(M.EMPLOYEE_ID, 'NO MGR') as MGR_ID,
    concat (M.FIRST_NAME,' ',M.LAST_NAME) as MGR_NAME
from EMPLOYEES as E
left join EMPLOYEES as M on (E.MANAGER_ID = M.EMPLOYEE_ID)
order by MGR_ID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42327399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档