使用 SQL Server 进行分页不会返回正确的结果

Posted

技术标签:

【中文标题】使用 SQL Server 进行分页不会返回正确的结果【英文标题】:Pagination with SQL Server does not return the correct results 【发布时间】:2019-02-22 21:16:48 【问题描述】:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Pagination</title>
</head>
<body>
<?php

// define how many results you want per page
$results_per_page = 3;
// find out the number of results stored in database
$AllRows = count($sql->query("SELECT * FROM $dbs[WEB2].._WebsiteNews")->fetchAll());
// determine number of total pages available
$number_of_pages = ceil($AllRows/$results_per_page);
// determine which page number visitor is currently on
if (!isset($_GET['news'])) 
  $page = 1;
 else 
  $page = $_GET['news'];

// determine the sql LIMIT starting number for the results on the displaying page
$this_page_first_result = ($page-1)*$results_per_page;
// retrieve selected results from database and display them on page
$PlayersQuery = "SELECT  * FROM $dbs[WEB2].._WebsiteNews ORDER BY No OFFSET $this_page_first_result ROWS FETCH NEXT $results_per_page ROWS ONLY ;";
    $query = $sql->Query1($PlayersQuery);
while ($row = $sql->QueryFetchArray($query)) 
  echo $row['No'] . ' ' . $row['Title']. '<br>';

// display the links to the pages
for ($page=1;$page<=$number_of_pages;$page++) 
  echo '<a href="/news=' . $page . '">' . $page . '</a> ';

?>
</body>
</html>

我有 7 页,我只得到相同的结果(每页 3 个相同的结果);不知道有什么问题。

我一直在寻找使用 SQL Server 来实现,但都使用 mysql;如果有人知道如何使它工作,请帮助我 - 谢谢

【问题讨论】:

我给出了一个基于MySQL的答案。你想让它与 MSSQL 或 MySQL 一起工作吗? MSSQL 不是 MYSQL,我只发现它在 mysql 上工作,并试图让它在 MSSQL 上工作。 当您运行在 SQL Server 中生成的实际查询时会发生什么?你得到了多少结果? 显示带有示例结果的示例数据集可能会给您带来更大的吸引力。 好吧,我用我的代码得到的结果prntscr.com/mouyx1第一页prntscr.com/mouzc9第二页与第一页的结果相同,所有页面都是这样,不知道为什么......每一页都是自 4 小时以来尝试修复它的第一页显示相同的结果^^ 【参考方案1】:

MySQL

$PlayersQuery = "SELECT  * FROM $dbs[WEB2].._WebsiteNews ORDER BY No LIMIT $this_page_first_result, $results_per_page;";

MSSQL

$PlayersQuery = "SELECT  * FROM $dbs[WEB2].._WebsiteNews ORDER BY No 
OFFSET $this_page_first_result ROWS
FETCH NEXT $results_per_page ROWS ONLY;

【讨论】:

这个是 mysql 而不是 mssql【参考方案2】:

这里是我用我的代码得到的结果 http://prntscr.com/mouyx1此第一页 http://prntscr.com/mouzc9 第二页与第一页的结果相同 所有页面也是这样 不知道为什么... 每页都显示与第一页相同的结果 4小时后尝试修复它^^

【讨论】:

以上是关于使用 SQL Server 进行分页不会返回正确的结果的主要内容,如果未能解决你的问题,请参考以下文章

有时 Dapper 或 System.Data 不会为某些数据库(SQL Server 2012 和 2019)上的简单选择查询返回正确的结果

带有 JOIN 的 SQL Server SELECT 分页

SQL Server存储过程同时返回分页结果集和总数

SQL server2005上千万条数据分页查询怎么做优化?

SQL SERVER 分页查询 和 Inser 添加并返回Id

使用 JOIN 进行 SQL Server 分页 - 列名“id”不明确