帮助计算总行数

时间:2011-09-19 22:48:03

标签: php mysql

我有以下类型的查询:

SELECT * FROM TABLE
GROUP BY Table.Table_ID
LIMIT 10

我想知道如果LIMIT 10不存在,将选择多少行。我不能简单地选择COUNT(Table_ID)因为我按此分组,所以它会在每行中给出1。

3 个答案:

答案 0 :(得分:6)

the manual中明确描述:

  

SQL_CALC_FOUND_ROWS告诉MySQL计算会有多少行   在结果集中,忽略任何LIMIT子句。的数量   然后可以使用SELECT FOUND_ROWS()检索行。见章节   11.13,“信息功能”。

如果您点击第11.13节的链接,那么就有一个例子:

  

FOUND_ROWS()

     

SELECT语句可能包含LIMIT子句,用于限制服务器返回客户端的行数。在某些情况下,需要知道语句在没有LIMIT的情况下返回的行数,但不再运行语句。要获取此行数,请在SQL_CALC_FOUND_ROWS语句中包含SELECT选项,然后再调用FOUND_ROWS()

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
    -> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();
     

第二个SELECT返回一个数字,表示如果没有SELECT子句,第一个LIMIT将返回的行数。

     

如果最近成功的SELECT语句中没有SQL_CALC_FOUND_ROWS选项,FOUND_ROWS()将返回该语句返回的结果集中的行数。如果语句包含LIMIT子句,FOUND_ROWS()将返回达到限制的行数。例如,如果语句包含FOUND_ROWS()1060将分别返回LIMIT 10LIMIT 50, 10

请使用该文档作为您的第一个停靠点。

答案 1 :(得分:-1)

SELECT COUNT(DISTINCT TABLE_ID) FROM TABLE

答案 2 :(得分:-2)

您可以在包含要查找的所有行的结果集上调用mysql_num_rows函数。

$result = mysql_query('SELECT * FROM TABLE GROUP BY Table.Table_ID');
$row_count = mysql_num_rows($result);