我有以下类型的查询:
SELECT * FROM TABLE
GROUP BY Table.Table_ID
LIMIT 10
我想知道如果LIMIT 10
不存在,将选择多少行。我不能简单地选择COUNT(Table_ID)
因为我按此分组,所以它会在每行中给出1。
答案 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()
或10
,60
将分别返回LIMIT 10
或LIMIT 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);