保留SQL查询中的顺序



我有一个SQL查询,如下所示:

SELECT * from Ask where Number IN 1,3,2

这会将结果返回为1,2,3,而不是1,3,2。

有没有办法强制匹配的记录集保留查询顺序?

您可以在order by子句中使用case表达式:

select * 
from ask 
where num in (1,3,2)
order by case num
when 1 then 1
when 3 then 2
when 2 then 3
end

根据您的数据库,可能会提供语法快捷方式。

Oracle有decode():

order by decode(num, 1, 1, 3, 2, 2, 3)

MySQL具有field():

order by field(num, 1, 3, 2)

旁注:num是许多数据库中的语言关键字。我在查询中将其重命名为num

相关内容

  • 没有找到相关文章

最新更新