如何根据leader列条件处理manager_3列值:yes保留,no设为NULL
员工数据表
| emp_id | emp | level | manager_id | manager_1 | manager_2 | manager_3 | leader |
|---|---|---|---|---|---|---|---|
| 100 | A | 1 | 500 | sam | chuck | matt | yes |
| 200 | B | 2 | 600 | sam | chuck | joe | no |
| 300 | C | 2 | 700 | sam | chuck | amy | no |
| 400 | D | 3 | 800 | sam | chuck | brian | yes |
需求说明
现有员工数据表,包含emp_id、emp、level、manager_id、manager_1、manager_2、manager_3、leader列。需实现:仅当该行leader列值为'yes'时,保留manager_3列的经理名称;若leader列值为'no',则将manager_3列值标记为NULL。
预期结果
| emp_id | emp | level | manager_id | manager_1 | manager_2 | manager_3 | leader |
|---|---|---|---|---|---|---|---|
| 100 | A | 1 | 500 | sam | chuck | matt | yes |
| 200 | B | 2 | 600 | sam | chuck | NULL | no |
| 300 | C | 2 | 700 | sam | chuck | NULL | no |
| 400 | D | 3 | 800 | sam | chuck | brian | yes |
解决方案
可以使用SQL的CASE WHEN条件表达式实现该逻辑,兼容绝大多数数据库:
SELECT emp_id, emp, level, manager_id, manager_1, manager_2, CASE WHEN leader = 'yes' THEN manager_3 ELSE NULL END AS manager_3, leader FROM employees;
如果使用MySQL,也可以用更简洁的IF函数:
SELECT emp_id, emp, level, manager_id, manager_1, manager_2, IF(leader = 'yes', manager_3, NULL) AS manager_3, leader FROM employees;
内容的提问来源于stack exchange,提问作者User277883
相关产品推荐
相关产品推荐

