2011-05-20 46 views
0

我可以使用SQLite的 - 回报排序列表

SELECT * FROM table 
WHERE id IN (478,278,190,890,123) 

返回的记录列表。

如何指示SQLite返回使用列表中指定的顺序排序的记录?

回答

3

没有专门的指示这样的事情。 您必须为每种情况找到解决方案。

在你的榜样,你可以做这样的:

SELECT * 
    FROM table 
WHERE id IN (478,278,190,890,123) 
ORDER BY CASE id WHEN 478 THEN 0 
        WHEN 278 THEN 1 
        WHEN 190 THEN 2 
        WHEN 890 THEN 3 
        WHEN 123 THEN 4 
      END 

但如果你有IDS的一个长长的清单,就会变得难以维持。

+0

谢谢。迄今为止的最佳答案。是的,如果列表很长,那么查询将会很大。让我们看看是否有人可以想出一个更简单的解决方案。 – mas 2011-05-20 12:36:25

+0

这些ID的顺序来自哪里?它总是一样吗?即:例如478总是在278之前的所有查询中。 – manji 2011-05-20 12:38:42

+0

目前,ID的顺序来自配置文件(可能每周更改一次),但最终它将来自用户选择。我可能更好的排序应用程序中的行。谢谢你的帮助。 – mas 2011-05-20 13:54:05

0

您可以使用按字段名称排序。在这个我假设编号 select * from table where id in (478,278,190,890,123) order by id

+0

编号“按ID排序”会给我123,190,278,478,890。我想要的订单是478,278,190,890,123。 – mas 2011-05-20 12:32:21

+0

你可以使用'order by id DESC' – vkrams 2011-05-22 11:52:05