84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我有一個需要透過select語句傳回的行數的函數。在一些搜尋後,我找到了FOUND_ROWS()函數。但我不認為它起作用:
SELECT * FROM tipfirme LIMIT 20; SELECT FOUND_ROWS();
因為它總是傳回1作為找到的值。
然而,如果我將其放在一行中運行,它就起作用了。
SELECT FOUND_ROWS() FROM (SELECT * FROM tipfirme LIMIT 20) as T
我做錯了什麼還是這個函數有問題?
FOUND_ROWS傳回前一個要求(整個select語句)傳回的行數。聽起來你只想要:
select count(1) from (select * From tipfirme limit 20) as T
select found_rows();單獨使用不總是回傳1;我懷疑你沒有測試你想要測試的內容。如果它緊跟在select * from tipfirme limit 20;之後,它確實會傳回select傳回的行數(在limit之後,或是之前如果你在前一個select中指定了sql_calc_found_rows)。
select found_rows();
select * from tipfirme limit 20;
sql_calc_found_rows
SELECT FOUND_ROWS() FROM (SELECT * FROM tipfirme LIMIT 20) as T並不是你想要的結果;它將傳回與子查詢傳回的行數相同的行數,且每行都會有先前執行的select傳回的行數,與子查詢的行數無關。
FOUND_ROWS傳回前一個要求(整個select語句)傳回的行數。聽起來你只想要:
select found_rows();
單獨使用不總是回傳1;我懷疑你沒有測試你想要測試的內容。如果它緊跟在select * from tipfirme limit 20;
之後,它確實會傳回select傳回的行數(在limit之後,或是之前如果你在前一個select中指定了sql_calc_found_rows
)。SELECT FOUND_ROWS() FROM (SELECT * FROM tipfirme LIMIT 20) as T
並不是你想要的結果;它將傳回與子查詢傳回的行數相同的行數,且每行都會有先前執行的select傳回的行數,與子查詢的行數無關。