【发布时间】:2023-03-15 05:19:02
【问题描述】:
谁能解释一下为什么这个 sqlite3 查询会起作用并返回我的 1000 条记录:
SELECT * FROM fmsdata LIMIT 1000 OFFSET (SELECT COUNT(*) FROM fmsdata) - 1000
但是当我加入 where 子句 WHERE valve=3 的那一刻,它什么也没返回?
SELECT * FROM fmsdata WHERE valve=3 LIMIT 1000 OFFSET (SELECT COUNT(*) FROM fmsdata) - 1000
此子查询返回表大小为 123290。
SELECT COUNT(*) FROM fmsdata
仅供参考,偏移量只是为了快速给我数据库的尾部而无需对任何内容进行排序,因为我知道最新的记录总是在末尾。
这是一个没有 where 子句的成功查询:
我们的测试表有大约 102 个阀门循环的记录,因此在限制为 1000 个的情况下,我们应该至少有 9 个条目出现在查询的末尾。
不确定是否重要,但我使用的是 Ubuntu 18.04 系统。
【问题讨论】:
标签: sqlite where-clause offset sql-limit