MySQL用另一个值替换结果值

时间:2012-10-12 09:09:56

标签: 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中获得所需的结果?

3 个答案:

答案 0 :(得分:8)

您可以使用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 

答案 1 :(得分:1)

您可以使用将为您的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

答案 2 :(得分:1)

我认为他想在re_type字段上保留ID,并在解压缩时解码它们。

您可以使用CASE WHEN或ELT(),MySql等效于Oracle的Decode(),如解释here

,但最佳做法是创建一个包含re_type和re_type_description字段的外部表,因此如果明天您将拥有新值,则无需更改所有查询。