SQL - 获取行数WHERE" something = something"但不限于LIMIT

时间:2015-09-06 15:05:11

标签: php mysql sql

所以我很难在标题中描述这个问题,但基本上我需要能够从WHERE子句获取我的SQL查询返回的行数,但不受LIMIT子句的限制。

示例:

我有一个由10个帖子组成的表格。他们都有专栏" show" =" true"。

然后我写这样的查询:

$result = "SELECT * FROM table WHERE show = 'true' LIMIT 5";

我现在需要获取一个变量,如果LIMIT没有在那里,将返回多少帖子。

$count = mysqli_num_rows($result);不起作用,因为LIMIT只会告诉我5。我不知何故需要知道那里有10个帖子,列有#34; show" =" true",即使我的查询仅因LIMIT而返回5个帖子。

非常感谢帮助!

2 个答案:

答案 0 :(得分:3)

使用SQL_CALC_FOUND_ROWSFOUND_ROWS()

select SQL_CALC_FOUND_ROWS t.*
from table t.*
where show = 'true'
limit 5;

然后:

select found_rows();

文档为here

答案 1 :(得分:2)

您可以使用SQL_CALC_FOUND_ROWSFOUND_ROWS()

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE show = 'true' LIMIT 5;
SELECT FOUND_ROWS();

http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_found-rows

另一个选择是发出两个不同的查询,一个用于获取前五个(如您已经拥有),另一个用于获取总计数:

SELECT * FROM table WHERE show = 'true' LIMIT 5;
SELECT COUNT(*) FROM table WHERE show = 'true';