接受的答案似乎是錯誤的。因爲它建議在帶有LIMIT的查詢之後使用found_rows()。
答案:問題是關於RETURN 1,在某些情況下,作爲found_rows()的結果0的問題;
當您的第一個選擇語句後執行一些其他查詢時,會發生這種情況。 尤其是當您使用IDE或某個客戶端運行查詢時,在查詢之前和之後執行一些額外的「準備」查詢。
和found_rows()將返回在服務器上運行的LAST查詢返回的結果的數量。在這種情況下,這不是我們所期望的。
因此返回1或0錯誤。
驗證: 您可以通過在服務器上啓用常規日誌記錄並執行查詢來驗證此情況。 您會看到在第一個查詢和找到的行查詢之間執行的一對附加查詢。
FIX 存儲過程或舊的COUNT(*)。
表現明智,幾乎沒有任何區別。
附加
,如果你的目的是要找到行的總數返回然後它的罰款。 和SQL_CALC_FOUND_ROWS的使用變得不重要。
這裏是一條通用規則,找到的行不需要LIMIT,也不需要SQL_CALC_FOUND_ROWS。 但其中三個可以一起使用,以提供非常有用的結果。
即運行類似的東西。
SELECT SQL_CALC_FOUND_ROWS * from some_table_name LIMIT 0,10;
SELECT FOUND_ROWS();
我們得到這個會被詢問時,我們從sometable_name運行 SELECT *返回的行數; ie:沒有限制。
話說回來,
SELECT * from some_table_name LIMIT 0, 10;
SELECT FOUND_ROWS();
會給我們的結果的總數,其中限制的COS將< = 10。並沒有服務於任何實際目的,但這不是一個錯誤。
你想知道總記錄? – 2013-02-13 06:12:09
先生這不是我的解決方案PLZ建議最好的一個忘了舊/新等 – okconfused 2013-02-13 06:12:42
是的Devang Rathod,但通過使用選擇找到的行 – okconfused 2013-02-13 06:13:24