与ms访问中的mysql限制相同的是什么。 TOP是不够的,因为我打算用它进行分页。
由于
答案 0 :(得分:4)
没有一个。你最好的办法是添加一个ID列作为主键(如果你还没有)和循环输出的块输出:
SELECT * FROM table
WHERE id >= offset AND id <= offset + chunk_size - 1
直到你得到所有的行。
答案 1 :(得分:3)
奇怪的是,Microsoft文档中有一些引用了Access数据库引擎的LIMIT TO nn ROWS
语法:
About ANSI SQL query mode (MDB)
然而,实际测试似乎证实了这种语法在Access数据库引擎的发布版本中从未存在过。也许这是SQL Server团队想要放入Jet 4.0但被Windows团队命令回滚的功能之一?无论如何,似乎我们必须简单地将其归结为微软不会花时间纠正的错误文档错误:(
如果您需要在服务器**端进行分页,那么我建议您考虑一个功能更强大的现代SQL产品,并提供更好的文档;)
**从概念上讲,即:Access数据库引擎不是服务器DBMS。
答案 2 :(得分:2)
由于您似乎没有这些行的任何类型的序列唯一键编号,因此您需要创建一个排名列:How to Rank Records Within a Query
您需要确定一次返回的行数N =(10,25,100)。
您需要跟踪用户所在的“页面”以及第一个和最后一个等级的值。
然后当您拨打下一页的电话时,接下来的N行是&gt;或者&lt;第一个和最后一个排名(取决于用户是否转到上一页或下一页)。
我确信有办法计算最后一页,第一页等等。
答案 3 :(得分:0)
通过使用TOP关键字,只能获得类似于Limit语句的分页SQL,如下所示:
第一步:
sql =“select top”&amp; LESS_COUNT&amp;“* from(SELECT top”&amp;(PAGE_COUNT * getPage)&amp;“* FROM(SELECT”&amp; COLUMNS&amp;“FROM”&amp; TABLENAME&amp;“)AS TBL “&amp; getWhere&amp; getOrderby(”asc“)&amp;”)作为TBL“&amp; getOrderby(”desc“)
第二步:
sql =“SELECT TOP”&amp; PAGE_COUNT&amp;“* FROM(”&amp; sql&amp;“)as TBL”&amp; getOrderby(“asc”)
总结;你应该重新订购并将结果颠倒3次。
答案 4 :(得分:-1)
将您的项目移植到PHP&amp; MySQL的。更好地支持这些类型的操作和查询以及更好的在线文档。作为一名拥有16年经验的资深DB开发人员,我已经成长为以其他任何方式无法比拟的激情来推荐MS Access和MS SQL。这完全是由于缺乏支持和文档。