即使在 SQL 中使用 LIMIT 分頁,如何擷取總行數?

Susan Sarandon
發布: 2024-10-27 15:29:01
原創
806 人瀏覽過

How do you retrieve the total number of rows even when using pagination with LIMIT in SQL?

即使使用LIMIT 分頁時也擷取總行

在SQL 中使用LIMIT 子句對結果進行分頁時,必須執行兩次查詢才能取得結果可能會很麻煩總行數。對於需要大量時間執行的複雜查詢尤其如此。幸運的是,有一個解決方案可讓您透過單一查詢來完成此操作。

SQL_CALC_FOUND_ROWS 和 FOUND_ROWS()

從 MySQL 4.0.0 開始,您可以在主查詢中使用 SQL_CALC_FOUND_ROWS 選項通知 MySQL 計算總行數,同時忽略 LIMIT 子句。這需要您執行第二個查詢來檢索行計數。但是,此查詢通常比主資料檢索查詢更簡單、更快。

使用方法如下:

<code class="sql">SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;
SELECT FOUND_ROWS();</code>
登入後複製

緊接著第一個查詢之後的第二個查詢擷取總行使用 FOUND_ROWS() 函數進行計數。

在MySQL 8.0 中已棄用

在MySQL 版本8.0.17 及更高版本中,SQL_CALC_FOUND_ROWS 修飾符和FOUND_ROWS() 函數已被棄用,並將在未來的版本。 MySQL 文件現在建議使用 COUNT 來取得總行數。

例如:

<code class="sql">SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;</code>
登入後複製

結論

利用這些技術,您可以有效地檢索即使使用帶有LIMIT 子句的分頁,也能顯示總行數,從而提高查詢效率並簡化程式碼。

以上是即使在 SQL 中使用 LIMIT 分頁,如何擷取總行數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!