MySQL将结果值替换为另一个值

MySQL将结果值替换为另一个值,mysql,sql,case-when,ansi-sql,Mysql,Sql,Case When,Ansi Sql,我有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中获得所需的结果吗?您可以使用

我有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中获得所需的结果吗?

您可以使用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_类型的标签,如

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

我认为他想把ID保留在re_类型字段上,并在提取时对其进行解码

您可以使用CASE WHEN或ELT(),MySql相当于Oracle的Decode(),如所述

,但最佳做法是创建一个包含re_type和re_type_description字段的外部表,这样,如果明天有新值,就不必更改所有查询