我有动态的Id 31165,31160,31321,31322,31199,31136列表。

当我运行查询

select id,name from master_movievod where id in(31165,31160,31321,31322,31199,31136);

我得到以下结果
31136|Independence Day
31160|Planet of the Apes
31165|Mrs. Doubtfire
31199|Moulin Rouge
31321|Adult Movie 2
31322|Adult Movie 3

该列表按升序排列。

我想要列表以输入顺序相同
31165|Mrs. Doubtfire
31160|Planet of the Apes
31321|Adult Movie 2
31322|Adult Movie 3
31199|Moulin Rouge
31136|Independece Day

最佳答案

如果没有order by子句,则无法保证数据库将结果返回给您的顺序。不幸的是,SQLite没有类似MySQL的field的自定义排序功能,但是您可以使用case表达式进行吉米绑定(bind):

SELECT   id, name
FROM     master_movievod
WHERE    id IN (31165, 31160, 31321, 31322, 31199, 31136)
ORDER BY CASE ID WHEN 31165 THEN 0
                 WHEN 31160 THEN 1
                 WHEN 31321 THEN 2
                 WHEN 31322 THEN 3
                 WHEN 31199 THEN 4
                 WHEN 31136 THEN 5
          END ASC

10-08 18:40