我有下表:
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 < 2
或WHERE ID = 2 - 1
。
但这种方法有问题!假设我删除了该行(ID = 1),查询将返回 null ,因为该ID不存在。
那么,在这个例子中,我如何从ID 2中选择前一个并返回ID 0? (身份证1已消失)
答案 0 :(得分:1)
您可以使用子查询查找低于您提供的ID
的最大ID
:
SELECT *
FROM mytable m
WHERE m.id = (SELECT MAX(m2.id)
FROM mytable m2
WHERE m2.ID < 2);
的 SqlFiddleDemo
强>