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

标签 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

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

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

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

那么,在这个例子中,我如何从 ID 2 中选择前任并返回 ID 0? (ID 1 不见了)

最佳答案

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

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

SqlFiddleDemo

关于Sqlite 查询 - 我如何选择前任?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34372659/

相关文章:

android - Sqlite 数据库 onCreate 参数

sql - SQLite 可以处理 9000 万条记录吗?

sql - 如何从另一个表中获取名称列表+与该名称相关的出现次数

SQL 特殊分组依据以 * 结尾的字符串列表

SQL子查询问题

mysql - 数据库架构(帮助)

database - 存储很长的文本 : BLOB or TEXT

c++ - CMake 在源代码附近找不到头文件

sql - 返回不在 SQL 列表中的最小整数

php - 在图像悬停和更新页面上查询 MySql DB 而不刷新