MySQL заменит значение результата другим значением

У меня есть MySQL и запрос:

select name,re_type from myTable

Я хочу заменить все значения типа:

1 = student
2 = teacher 

Итак, результат должен быть:

name    re_type
---------------
Ron     Student
Mac     Teacher

Не как:

name    re_type
---------------
Ron     1
Mac     2

Можно ли сделать такой запрос, чтобы я получил желаемый результат в MySQL?

3 ответа

Решение

Вы можете использовать оператор CASE

SELECT name, CASE WHEN re_type = 1 THEN 'Student' WHEN re_type = 2 THEN 'Teacher' ELSE 'Donno' END AS re_type_text
FROM myTable 

Я думаю, что он хочет сохранить идентификаторы в поле re_type и просто декодировать их при извлечении.

Вы можете использовать CASE WHEN или ELT(), MySql, эквивалентный Oracle Decode(), как описано здесь

, но лучше всего создавать внешнюю таблицу, содержащую поля re_type и re_type_description, поэтому, если завтра у вас появятся новые значения, вам не нужно изменять все ваши запросы.

Вы можете использовать объединенную таблицу, в которой будут храниться метки для вашего re_type, например

re_type_id  re_type_label
1           student
2           teacher

И измените ваш запрос:

select t.name,l.re_type_label
from myTable t
inner join labelsTable l
    on l.re_type_id = t.re_type
Другие вопросы по тегам