对整数的字符串表示形式排序?

时间:2018-06-08 11:53:29

标签: mysql

我有一个带有书签类型字段的书签表,其类型为int(11)。

要按类型对书签进行排序,我可以执行一个简单的查询:

select * from bookmarks order by type

效果很好。

除了按整数类型对书签进行排序。

在我的gui中,我将整数类型转换为字符串表示形式:

1=Great
2=Bad
3=Wow
...

以上查询结果为:

bookmarks of type Great
bookmarks of type Bad
bookmarks of type Wow

因为书签按整数类型排序。

我想得到结果:

bookmarks of type Bad
bookmarks of type Great
bookmarks of type Wow

如何在不更改字段类型的情况下对整数类型的字符串表示形式进行排序,而不会丢失像分页这样的便捷查询功能?

2 个答案:

答案 0 :(得分:1)

您可以转换订单,以执行不在ID上的字符串:

select * from bookmarks
order by CASE
WHEN type = 1 THEN 'Great'
WHEN type = 2 THEN 'Bad'
WHEN type = 3 THEN 'Wow'
ELSE 'Zzz' END 

答案 1 :(得分:1)

正式的方法是创建一个类似于这个的新类型表:

<强>类型

id    type
1     Greate
2     Bad
3     Wow

然后在查询中你可以这样做:

Select *
From bookmarks inner join types
On bookmarks.type = types.id
Order By types.type