我有一个相对简单的选择查询,它按列值请求行(这不是由我控制的)。我传入一个id值的变量参数来返回。这是一个例子:
select * from team where id in (2, 1, 3)
我注意到随着数据库随时间改变其顺序,我的结果也在改变顺序。有没有办法让SQLite保证结果与参数的顺序相同?
答案 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