高级 SQLite ORDER BY 查询
Advanced SQLite ORDER BY query
我有兴趣以一种非常特殊的方式对游标进行排序。在我的程序中,用户可以输入搜索查询。我想 return 使用他们输入的查询 starting 对结果进行排序,然后是其余的项目简单 包含 查询。
例如:用户输入"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
您可以将各种表达式放在 ORDER BY 子句中,并使用 CASE 的形式得出一个表示 "put things that start with 'de' first" 的表达式非常简单:
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
函数特定于 MySQL。
我有兴趣以一种非常特殊的方式对游标进行排序。在我的程序中,用户可以输入搜索查询。我想 return 使用他们输入的查询 starting 对结果进行排序,然后是其余的项目简单 包含 查询。
例如:用户输入"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
您可以将各种表达式放在 ORDER BY 子句中,并使用 CASE 的形式得出一个表示 "put things that start with 'de' first" 的表达式非常简单:
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
函数特定于 MySQL。