4

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

4

3 回答 3

9

您可以使用 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 
于 2012-10-12T09:13:51.980 回答
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
于 2012-10-12T09:14:57.563 回答
1

我认为他想在 re_type 字段上保留 ID,并在提取时对其进行解码。

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

,但最佳实践是创建一个包含 re_type 和 re_type_description 字段的外部表,因此如果明天您将获得新值,则不必更改所有查询。

于 2012-10-12T09:25:34.530 回答