Sqlite查询 - 我如何选择前任?

时间:2015-12-19 16:05:22

标签: sql sqlite

我有下表:

ID    name    Last
0     Joe     Doe
1     Hut     Nob
2     Lis     Hug
3     Edy     mur

我使用此查询来选择ID:

SELECT name FROM myDatabase WHERE ID = 2

在这种情况下,查询返回字符串 Lis ,现在,我如何选择前一个值?

简单,2的前身是1,所以我只需要WHERE ID < 2WHERE ID = 2 - 1

但这种方法有问题!假设我删除了该行(ID = 1),查询将返回 null ,因为该ID不存在。

那么,在这个例子中,我如何从ID 2中选择前一个并返回ID 0? (身份证1已消失)

1 个答案:

答案 0 :(得分:1)

您可以使用子查询查找低于您提供的ID的最大ID

SELECT *
FROM mytable m
WHERE m.id = (SELECT MAX(m2.id)
              FROM mytable m2
              WHERE m2.ID < 2);

SqlFiddleDemo