使用 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 server2005上千万条数据分页查询怎么做优化?