【问题标题】:PHP Pagination MSSQL alternative to LIMIT?PHP分页MSSQL替代LIMIT?
【发布时间】:2018-01-11 02:12:06
【问题描述】:

要正常对选择查询进行分页,我会这样做:

SELECT * FROM items WHERE condition = 1 LIMIT $start, $items

但是,在 MSSQL 中没有 LIMIT 条件,所以我尝试了:

SELECT * FROM items WHERE condition = 1 OFFSET $start ROWS FETCH NEXT $items ROWS ONLY

我得到了错误:

42000 - [SQL Server]FETCH 语句中选项 NEXT 的使用无效。

那么我究竟应该如何对结果进行分页呢?

【问题讨论】:

标签: php sql-server pagination limit


【解决方案1】:

这可能会对您有所帮助。 OFFSET-FETCH 子句为您提供了仅从结果集中获取结果的窗口或页面的选项。 OFFSET-FETCH 只能与 ORDER BY 子句一起使用。

SELECT P_Name FROM ITEMS ORDER BY  P_Name OFFSET 10 ROWS;

SRC:https://technet.microsoft.com/en-us/library/gg699618.aspx

【讨论】:

  • 没关系,它现在执行查询,但是分页不起作用。它总是选择相同的字段,即使 $start 不同...
【解决方案2】:

与 MySQL 的 LIMIT 子句等效的 MS SQL 是 TOP。

SELECT TOP 10 * FROM items WHERE condition = 1; 

将返回前十行,与此处使用 LIMIT 的方式相同:

SELECT * FROM items WHERE condition = 1 stuff LIMIT 10; 

更多细节(因为我不知道你代码的所有上下文)你可以看看here

【讨论】:

  • 但是 TOP 只需要 1 个参数。那么如何使用 TOP 从 10-20(例如)获取行?
猜你喜欢
  • 2012-11-13
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
相关资源
最近更新 更多