按参数顺序返回选择查询

时间:2014-06-12 23:43:46

标签: sqlite

我有一个相对简单的选择查询,它按列值请求行(这不是由我控制的)。我传入一个id值的变量参数来返回。这是一个例子:

select * from team where id in (2, 1, 3)

我注意到随着数据库随时间改变其顺序,我的结果也在改变顺序。有没有办法让SQLite保证结果与参数的顺序相同?

2 个答案:

答案 0 :(得分:1)

如果您的ID太多而查询变得难以处理,请使用临时表来存储它们:

CREATE TEMPORARY TABLE SearchIDs (
    ID,
    OrderNr INTEGER PRIMARY KEY
);

OrderNr列为autoincrementing,以便在插入值时自动获取正确的值。)

要进行搜索,您必须填写此表:

INSERT INTO SearchIDs(ID) VALUES (2), (1), (3) ... ;

SELECT Team.*
FROM Team
JOIN SearchIDs USING (ID)
ORDER BY SearchIDs.OrderNr;

DELETE FROM SearchIDs;

答案 1 :(得分:0)

试试这个!

select * from team order by 
     case when 2 then 0
          when 1 then 1
          when 3 then 2
     end