我有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中获得所需的结果?
答案 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字段的外部表,因此如果明天您将拥有新值,则无需更改所有查询。