MySQL FOUND_ROWS&总行数

时间:2011-02-25 17:27:06

标签: mysql

我正在做以下

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

但是,n由用户设置。有没有办法知道n不会超过总行数而不必运行两次查询?

2 个答案:

答案 0 :(得分:0)

我没有看到如何在不运行两个查询的情况下完成目标。 您可以运行不同的查询来计算将返回的结果数,然后根据用户值检查该数字。

答案 1 :(得分: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