对整数的字符串表示进行排序?

62lalag4  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(350)

这个问题在这里已经有答案了

在mysql中按固定列表排序(2个答案)
两年前关门了。
我有一个带有bookmark类型字段的bookmark表,它的类型是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

如何在不更改字段类型和不丢失分页等方便的查询功能的情况下对整数类型的字符串表示进行排序?

egdjgwm8

egdjgwm81#

您可以通过对字符串而不是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
1sbrub3j

1sbrub3j2#

正式的方法是创建一个新的类型表,如下所示:
类型

id    type
1     Greate
2     Bad
3     Wow

然后在查询中可以执行以下操作:

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

相关问题