Как заменить значения столбца запросом MySQL - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю с 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. Например, значение 1 в employee.manager_id представляет employee.id число 1, которое является Petra Wallace.

Я хотел бы показать в столбце employee.manager_id, employee.first_name и employee.last_name вместо числа. У кого-нибудь есть идеи, как это сделать?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Левое объединение возвращает менеджера на основе критериев 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
0 голосов
/ 07 апреля 2020

Попробуйте это:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...