为了账号安全,请及时绑定邮箱和手机立即绑定

SQLite LIMIT / OFFSET查询

SQLite LIMIT / OFFSET查询

Helenr 2019-10-08 11:18:55
我对Sqlite有一个简单的问题。这有什么区别:Select * from Animals LIMIT 100 OFFSET 50和Select * from Animals LIMIT 100,50
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

这两种语法形式有些混乱,因为它们会颠倒数字:


LIMIT <skip>, <count>

等效于:


LIMIT <count> OFFSET <skip>

它与MySQL和PostgreSQL的语法兼容。MySQL支持这两种语法形式,其文档声称第二个带有OFFSET的语法旨在提供与PostgreSQL的兼容性。PostgreSQL 文档显示它仅支持第二种语法,SQLite文档显示它同时支持第二种语法,建议使用第二种语法以避免混淆。


顺便说一句,在没有先使用ORDER BY的情况下使用LIMIT可能不会总给您想要的结果。实际上,SQLite将以某种顺序返回行,这可能取决于它们在文件中的物理存储方式。但这并不一定意味着它符合您想要的顺序。获得可预测订单的唯一方法是显式使用ORDER BY。


查看完整回答
反对 回复 2019-10-08
?
月关宝盒

TA贡献1772条经验 获得超5个赞

后者是一种替代语法,但有一个警告:


如果使用逗号而不是OFFSET关键字,则偏移量是第一个数字,限制是第二个数字。这种看似矛盾是故意的-使其与旧版SQL数据库系统的兼容性最大化。


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 680 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信