ore*_*ake 1 mysql sql sql-server sorting
假设我有一个查询"select*from where where where in(0,2,5,1,3)",我实际上希望以相同的顺序返回它们指定where子句的行.ID的顺序将从查询更改为查询,并且订单没有模式.
我知道可以改变数据模型,创建临时表等.但请相信我,这些类型的解决方案在我的情况下不起作用.我也无法改变应用程序代码中结果对象的顺序.
我也知道不同的数据库引擎对事物的排序方式不同,在某些情况下无法保证等等等等.我只想不,这可能吗?
如果有帮助我将使用mysql或sql server :)
在MySQL上,您可以使用FIND_IN_SET:
ORDER BY FIND_IN_SET(id, '0,2,5,1,3')
Run Code Online (Sandbox Code Playgroud)
最便携的排序方式是使用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
Run Code Online (Sandbox Code Playgroud)
Select ..
From Clauses
Where Id In(0,2,5,1,3)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
340 次 |
| 最近记录: |