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