我正在使用MySQL工作台来获取我要查找的表。我快到了。以下是查询结果:
----------------------------------------------------------------------------
employee.manager_id | employee.id | employee.first_name | employee.last_name
----------------------------------------------------------------------------
null | 1 | Petra | Wallace
null | 3 | Peter | Willis
null | 5 | Michael | Best
1 | 2 | David | Lone
3 | 4 | Barbara | Grinder
5 | 6 | Anthony | Krone
现在,我想用以下内容替换列employee.manager_id
的值:
- 当值为
null
时,将其保留为null
或用字符串"none"替换 - 当该值有一个数字时,它将引用
employee.id
的数字。例如,employee.manager_id
中的值1表示employee.id
编号1,即Petra Wallace
我想在employee.manager_id
列中显示employee.first_name
和employee.last_name
,而不是数字。有人知道怎么做吗?
左联接根据join标准检索管理器。如果没有管理器,那么所有的manager.*
字段都是NULL
。
SELECT
COALESCE(manager.first_name,"none") as manager_first_name,
manager.last_name as manager_last_name,
employee.id,
employee.first_name,
employee.last_name
FROM employee
LEFT JOIN employee manager
ON employee.manager_id = manager.id
ORDER BY employee.manager_id
试试这个:
SELECT
CASE WHEN employee.manager_id IS NULL THEN "NONE"
ELSE (SELECT CONCAT(e.first_name, ' ', e.last_name), e.id FROM employee e
WHERE e.id = employee.manager_id)
END AS case_generated_column,
employee.id, employee.first_name, employee.last_name FROM employee ORDER BY employee.manager_id;