在SQLite中使用LIMIT是否以“ FIRST IN FIRST OUT”为基础提供数据或行?

问题描述

我在Ionic项目中使用sqlite,将日志文件保存在sqlite服务器中,为此,我想使用FirsT IN FirsT OUT限制.db文件仅包含最后2000个数据值,

LIMIT 2000

会给我最后存储的2000个值或我存储的前2000个值(这不是我的要求)。

非常感谢您的帮助。

解决方法

除非查询具有ORDER BY,否则

SQL查询将返回无序集。这实际上是SQL表表示无序集的事实的扩展。根本没有排序。

因此,在没有LIMIT的情况下使用ORDER BY将返回任意行。看起来行似乎是有序的,但实际上不是这样-至少不是按SQL标准。您需要一个ORDER BY

一个警告:我承认SQLite是一个非常简单的数据库,每个查询只允许一个线程。这样,它实际上可能会“可靠地”以特定顺序返回结果。但是,我从未找到能保证这种行为并与SQL标准相矛盾的文档。因此,即使没有效果,依靠没有ORDER BY的结果集的顺序也很冒险。