为什么mysql会返回一行?

时间:2011-08-16 09:28:36

标签: mysql sql

当我使用count()函数时,MySQL返回一行。我需要对分页系统使用count函数,我没有更好的主意。 我的SQL是:

SELECT *, count(id_question) AS num FROM `questions` LIMIT 0, 10

7 个答案:

答案 0 :(得分:3)

当您使用任何aggregate function时,如果没有group by子句,则只能看到一个结果。

答案 1 :(得分:1)

COUNT()是一个聚合函数,因此将所有行组合在一起。如果您需要所有行的计数,只需计算以您正在使用的任何语言返回的行数。

答案 2 :(得分:0)

SQL不允许聚合整个表并同时返回所有行。

您必须使用两个查询,一个用于总行数(count),另一个用于行本身。

答案 3 :(得分:0)

你试过......

SELECT *, count(*) AS num FROM `questions` LIMIT 0, 10

或者只是使用mysql_num_rows()来获取计数?

答案 4 :(得分:0)

由于count是一个聚合函数,因此它只会返回一行。您将有两个使用两个查询,一个用于选择,一个用于计数。 或者,您可以执行嵌套选择:

SELECT *, (SELECT count(id_question) from 'questions') AS num FROM `questions` LIMIT 0, 10

答案 5 :(得分:0)

您可以在正常结果查询中使用mysql_num_rows($queryHandle)。一个例子:

$query = 'SELECT * FROM `questions` LIMIT 0, 10';
$queryHandle = mysql_query($query);
$count = mysql_num_rows($queryHandle);
$firstRow = mysql_fetch_assoc($queryHandle);

答案 6 :(得分:0)

尝试:

SELECT * FROM `questions` a
INNER JOIN (
  SELECT count(`id_question`) as `num`
  FROM `questions`
) b
LIMIT 0, 10;

现在,每一行都会将表的总行数计为一个名为num的列。