簡體   English   中英

使用LIMIT和OFFSET時使用SQL獲取記錄數

[英]Get number of records with SQL while using LIMIT and OFFSET

我正在嘗試將頁面實現到我的網頁中。 我已經知道了,以便用戶可以將他們想要的頁碼放入要轉到的網址欄中。 我通過在URL欄中使用該數字並將其乘以10來獲得SQL語句中的OFFSET參數,從而為每個頁面獲取10條記錄來完成此操作。

但是我需要知道如果刪除LIMITOFFSET參數,該SQL語句可以返回多少記錄。 這是否可能在SQL語句中進行?還是我必須從數據庫中請求每條記錄並計算每頁的長度? 謝謝。

編輯:

如果我不使用LIMIT或OFFSET,我希望此語句可以返回的記錄數量

SELECT nfc_film.*, nfc_category.name FROM nfc_film
        JOIN nfc_film_category
          ON nfc_film.film_id = nfc_film_category.film_id
        JOIN nfc_category
          ON nfc_category.category_id = nfc_film_category.category_id
        WHERE title
          LIKE :searchterm OR nfc_category.name = :category
        LIMIT 10
        OFFSET :page

為了獲得當前查詢返回的行數,因為您使用PDO標記了php,所以可以將fetchAll()count()一起使用

例如:

$sth = $dbh->prepare("<your query>");
$sth->execute();

$result = $sth->fetchAll();
$numberOfRows = count($result);

要獲取表的總行數,但仍使用LIMIT ,您可以選擇

在一個單獨的查詢中計算:

SELECT COUNT(*)
FROM nfc_film
JOIN nfc_film_category
ON nfc_film.film_id = nfc_film_category.film_id
JOIN nfc_category
ON nfc_category.category_id = nfc_film_category.category_id
WHERE title LIKE :searchterm OR nfc_category.name = :category;

或者使用GROUP BY在單個查詢中執行此操作(這將避免您使用*的錯誤做法)

--                          v------------- Random datas ------------------------v
SELECT COUNT(*) AS "Count", nfc_film.id, nfc_film.name, nfc_film.otherInformation, nfc_category.name FROM nfc_film
JOIN nfc_film_category
ON nfc_film.film_id = nfc_film_category.film_id
JOIN nfc_category
ON nfc_category.category_id = nfc_film_category.category_id
WHERE title
LIKE :searchterm OR nfc_category.name = :category
GROUP BY nfc_film.id, nfc_film.name, nfc_film.otherInformation, nfc_category.name
LIMIT 10
OFFSET :page

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM