[英]Get number of records with SQL while using LIMIT and OFFSET
我正在嘗試將頁面實現到我的網頁中。 我已經知道了,以便用戶可以將他們想要的頁碼放入要轉到的網址欄中。 我通過在URL欄中使用該數字並將其乘以10來獲得SQL語句中的OFFSET
參數,從而為每個頁面獲取10條記錄來完成此操作。
但是我需要知道如果刪除LIMIT
和OFFSET
參數,該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.