我有兴趣以非常特殊的方式订购光标。在我的程序中,用户可以输入搜索查询。我想将带有 项目的结果与他们输入的查询一起返回,然后是其他简单 包含的项目 查询。
例如:用户输入“de”。我希望我的光标以这样的方式排序,其中 以 “de”开头的所有列都是第一个,其次是 包含 “de”。
这就是我希望我的光标看起来像:
Deathless Behemoth
Deathmark
Deathmark Prelate
Deathmask Nezumi
Deathmist Raptor
Deathpact Angel
Acid Web Spider
Careful Consideration
Hell-Bent Raider
Jhovall Rider
Living Death
以“de”开头的光标高于其他只包含“de”的光标。
PS我在这个网站上遇到了一些人们使用ORDER BY FIELD()函数的答案。这看起来像我想要使用的,但我得到一个错误
Error while executing SQL query on database 'database_name': no such function: FIELD
答案 0 :(得分:2)
你可以把各种各样的表达式放在一个ORDER BY子句中,然后提出一个表达式"表达以' de'开头的东西。第一"使用CASE形式非常简单:
order by case when lower(user_type) like 'de%' then 0 else 1 end,
lower(user_type)
因此,当user_type
列以'de'
开头时,case
表达式的计算结果为0
,否则评估结果为1
,0
在1
之前排序,以'de'
开头的类型将首先出现。
field
函数是AFAIK,特定于MySQL。