获取查询结果中的总行数...
您只需迭代结果并计算它们即可。你没有说明你正在使用什么语言或客户端库,但 API 确实提供了mysql_num_rows http://dev.mysql.com/doc/refman/5.0/en/mysql-num-rows.html函数可以告诉您结果中的行数。
例如,这在 PHP 中公开为mysqli_num_rows http://php.net/manual/en/mysqli-result.num-rows.php功能。当您编辑问题以提及您正在使用 PHP 时,这里有一个使用 mysqli 函数的简单示例:
$link = mysqli_connect("localhost", "user", "password", "database");
$result = mysqli_query($link, "SELECT * FROM table1");
$num_rows = mysqli_num_rows($result);
echo "$num_rows Rows\n";
获取符合某些条件的行数...
只需使用 COUNT(*) - 请参阅计数行 http://dev.mysql.com/doc/refman/5.0/en/counting-rows.html在 MySQL 手册中。例如:
SELECT COUNT(*) FROM foo WHERE bar= 'value';
使用 LIMIT 时获取总行数...
如果您使用了 LIMIT 子句,但想知道没有它会得到多少行,请使用SQL_CALC_FOUND_ROWS http://dev.mysql.com/doc/refman/5.0/en/select.html#id959825在您的查询中,然后是 SELECTFOUND_ROWS(); http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
SELECT SQL_CALC_FOUND_ROWS * FROM foo
WHERE bar="value"
LIMIT 10;
SELECT FOUND_ROWS();
对于非常大的表,这不会特别有效,并且您最好运行一个更简单的查询来获取计数并在运行查询来获取数据页之前对其进行缓存。
自 8.0.17 起已弃用 - 正如 Etienne Bruines 在评论中指出的那样,使用 SQL_CALC_FOUND_ROWS 是已弃用 https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_found-rows在 8.0.17 中,并将在后续版本中删除。建议发出第二个查询来计算计数。