小编典典

SQL排序顺序按查询中指定的顺序

sql

假设我有一个查询“ select * from子句,其中id在(0,2,5,1,3)中”,我实际上希望返回的行以它们在where子句中指定的相同顺序返回。ID的顺序将随查询的不同而改变,并且该顺序没有模式。

我知道可以更改数据模型,创建临时表等。但是请相信我,这些类型的解决方案在我的情况下将行不通。我也无法在应用程序代码中更改结果对象的顺序。

我还知道,不同的数据库引擎对事物的排序方式不同,在某些情况下无法保证等等。我只是不想,这可能吗?

如果有帮助,我将使用mysql或sql server :)


阅读 185

收藏
2021-04-14

共1个答案

小编典典

在MySQL上,您可以使用FIND_IN_SET

ORDER BY FIND_IN_SET(id, '0,2,5,1,3')

最方便的订购方式是使用CASE表达式:

ORDER BY CASE id
           WHEN 0 THEN 1
           WHEN 2 THEN 2
           WHEN 5 THEN 3
           WHEN 1 THEN 4
           WHEN 3 THEN 5
         END
2021-04-14