自动增量选择SQLite

时间:2018-08-20 14:21:05

标签: sql sqlite

我在SQLite数据库中有一列名为id的列,该列是自动递增的,主键,唯一。

以下查询的结果是否保证是数据库中id的最小值,并且这是否对应于要插入的“最旧”(如FIFO中)行?

SELECT id FROM table LIMIT 1

2 个答案:

答案 0 :(得分:2)

SQLite documentation非常明确:

  

如果返回多行的SELECT语句没有   ORDER BY子句,返回行的顺序为   未定义。或者,如果SELECT语句确实具有ORDER BY子句,   然后附加到ORDER BY的表达式列表确定   将行返回给用户的顺序。

LIMIT将在ORDER BY之后应用 ,因此我认为它不会影响此语句的应用。

因此,如果要第一行,请使用ORDER BY

SELECT id
FROM table
ORDER BY id
LIMIT 1;

请注意,如果id是主键,则基本上不会增加​​开销。

我应该强调在实践中,您可能会获得没有ORDER BY的最小ID。但是,依赖与文档直接矛盾的行为是一个非常非常糟糕的主意。

答案 1 :(得分:0)

  

以下查询的结果是否保证是数据库中id的最小值

是的。但是,如果表为空或id列为NULL,则它也可能返回NULL

  

这是否对应于要插入的“最旧的”(如FIFO中的)行?

不,不能保证。

相关问题