2011-02-25 52 views
1

我做了以下MySQL的FOUND_ROWS及總行

n = 10 
SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name 
WHERE id > 100 LIMIT n, 20; 
SELECT FOUND_ROWS(); 

然而,正由用戶設定。有沒有辦法知道n不會遍歷整個行數而不必運行查詢兩次?

回答

0

我不明白你怎麼可能完成自己的目標,而無需運行兩個查詢。 您可以運行不同的查詢數,將返回結果的數量,然後檢查對用戶的價值,這個數字。

+0

是的,這就是我在想... – JeffTun 2011-02-25 17:42:38

0

一般這裏很少SQL知識,但我會盡力協助。

如果它的邊界上會發生什麼?你只選擇最後的20個?我不確定。從什麼樣子上的MySQL參考,LIMIT X,Y是指在結果返回第x值開始並返回y記錄(x和遵循y-1記錄)。所以看起來你需要檢查並確保n不大於你的計數 - 20.

DECLARE @blah INT; 

IF (n <= (SELECT Count(*) FROM tbl_name) - 20) THEN SET @blah = n; 
ELSE SET @blah = (SELECT Count(*) FROM tbl_name) - 20; 


SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT @blah, 20; 
    SELECT FOUND_ROWS(); 

END IF