如何计算MySQL查询返回的行数?

2022-08-30 11:14:16

如何计算MySQL查询返回的行数?


答案 1

正在获取查询结果中的总行数...

您可以只是迭代结果并对其进行计数。您没有说明您正在使用哪种语言或客户端库,但API确实提供了一个mysql_num_rows函数,可以告诉您结果中的行数。

例如,这在PHP中公开为mysqli_num_rows函数。由于您已经编辑了问题以提及您正在使用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(*) - 请参阅 MySQL 手册中的计数行数。例如:

SELECT COUNT(*) FROM foo WHERE bar= 'value';

获取使用 LIMIT 时的总行数...

如果您使用了 LIMIT 子句,但想知道没有它会得到多少行,请在查询中使用 SQL_CALC_FOUND_ROWS,后跟 SELECT FOUND_ROWS();

SELECT SQL_CALC_FOUND_ROWS * FROM foo
   WHERE bar="value" 
   LIMIT 10;

SELECT FOUND_ROWS();

对于非常大的表,这不会特别有效,您最好运行一个更简单的查询来获取计数,并在运行查询以获取数据页之前对其进行缓存。


答案 2

如果必须使用简单的 SQL 解决问题,则可以使用内联视图。

select count(*) from (select * from foo) as x;

推荐