根據網上的資料和自己測試小結一下:
1. 當表數據量很龐大, 需要使用sql的limit功能來分頁時, 需要發送兩條sql才能實現分頁
SELECT * FROM tablename WHERE conditions LIMIT pagestart, pagesize
以及
SELECT COUNT(*) FROM tablename WHERE conditions
其中第二條是在UI上顯示總結果數量以及進行分頁的操作;
2. 但是, 如果查詢還需要使用到 GROUP BY的話, 這個時候第二條語句直接使用
COUNT(*) 就無法得到正確的結果;
這時就要調整下sql了
使用
SELECT * FROM tablename WHERE conditions GROUP BY column_1, column_2 LIMIT pagestart, pagesize
以及
SELECT COUNT(DISTINCT column_1, column_2) FROM tablename WHERE conditions
其中第二條的 column_1, column_2與第一條的GROUP BY 后的字段要保持一致(字段數量和順序),
需要GROUP BY一個或多個字段用逗號分隔就可以了,
此時COUNT出來的結果就和第一條不使用LIMIT查詢的結果數量相等了;
