需求:SELECT userId FROM user WHERE userId < 500 同時取得符合條件的總筆數。
SELECT userId, COUNT(*) OVER() AS total_count
FROM user
WHERE userId < 500;
SELECT userId, (SELECT COUNT(*) FROM user WHERE userId < 500) AS total_count
FROM user
WHERE userId < 500;
-- 1. 取資料
SELECT userId FROM user WHERE userId < 500 LIMIT 20 OFFSET 0;
-- 2. 取總數
SELECT COUNT(*) FROM user WHERE userId < 500;
SQL_CALC_FOUND_ROWS (已棄用於 8.0)SELECT SQL_CALC_FOUND_ROWS userId FROM user WHERE userId < 500 LIMIT 20;
SELECT FOUND_ROWS(); -- 返回未 LIMIT 時的總筆數
COUNT(*) OVER()。避免在應用層迴圈計數,交給資料庫最有效率。