SELECT * FROM tblItems
WHERE itemId IN (9,1,4)
Run Code Online (Sandbox Code Playgroud)
以SQL找到它们的顺序返回(恰好是1,4,9)但是,我希望它们按照我在数组中指定的顺序返回.
我知道我可以用我的母语(obj c)对它们进行重新排序,但是在SQL中有一种巧妙的方法吗?
这样的事情会很棒:
ORDER BY itemId (9,1,4) -- <-- this dosn't work :)
Run Code Online (Sandbox Code Playgroud)
小智 5
可能最好的方法是创建一个项目ID表,其中还包括排名顺序.然后,您可以按排名顺序加入和排序.
创建一个这样的表:
itemID rank
9 1
1 2
4 3
Run Code Online (Sandbox Code Playgroud)
然后您的查询将如下所示:
select tblItems.* from tblItems
inner join items_to_get on
items_to_get.itemID = tblItems.itemID
order by rank
Run Code Online (Sandbox Code Playgroud)
您可以将 case 构造添加到 select 子句中。
select case when itemid = 9 then 1
when itemid = 1 then 2 else 3 end sortfield
etc
order by sortfield
Run Code Online (Sandbox Code Playgroud)