【发布时间】:2019-07-16 23:35:19
【问题描述】:
我正在尝试使用 ORDER BY AND 限制从 SQLite DB 中选择记录。一次我期待 1000 条记录。表中有大约 400k 行。一旦记录数达到 30 K 左右,它就会开始跳过记录。记录 ID 从 1 到 400 000 是连续的。当达到 [LIMIT 29000, 1000] 时,它会给出 ID 54001 的记录。
SQLite 版本 3.13.0 操作系统:Fedora release 24(二十四)x86_64
SELECT tab1.FID, tab1.NAME, tab2.NAME as TNAME, tab1.SIZE
FROM tab1
INNER JOIN tab2 ON tab2.DID = tab1.DID
WHERE (tab1.STATUS IN (0, 2, 4, 10) AND tab2.NAME LIKE "'/4L/%'")
ORDER BY tab1.FID ASC
LIMIT 1000 OFFSET 29000
它应该给出 29001 的结果,但给出了 54001 的记录。
【问题讨论】:
-
如果您的查询返回所有行,它应该给出 29001 的结果。但这不是因为您有 WHERE 子句并且您也加入了 tab2。 tab1 的
dids 也是 tab2 的吗?
标签: sqlite