这是一个示例表:
name | cat
----------
hugo | sal
bob | mgr
mike | dev
jeff | mgr
john | dev
两者都是name
Varchar cat
。
cat
反映了这些名称的类别,但我喜欢为它们分配优先级,然后通过查询将它们全部列出,按此优先级排序。
有哪些方法可行?我可以提取cat
到第二个表中,构建一个外键等。但鉴于我的应用程序非常简单并且结构可能是不可更改的:我必须先列出mgr
名称,然后是dev
名称,然后是sal
名称?
假设您无法更改结构,您可以在 ORDER BY 中使用 CASE 语句:
但是,如果您可以更改您的结构,您可以创建一个
Category
包含类别代码和排名的表,将您的示例表连接到该Category
表并按此排名进行排序。这种结构在 Wordpress 中帮助我。例如,首先选择自定义帖子,然后其他:海报和项目是自定义的 SELECT
post_type
FROMwp_posts
ORDER BY(当post_type
= 'poster' then 1 whenpost_type
= 'project' then 2 else 3 end)