1

我认为这是一个简单的问题,但谷歌只给我选择和计算结果。

我想知道是否可以从有限制的表中选择并计算通常会受查询影响的所有行。

例如:

我在汽车表中有 100 行,我选择了前 20 行,我想在一个查询中计算汽车表中有多少辆汽车。

提前致谢

4

2 回答 2

1

使用SQL_CALC_FOUND_ROWS然后使用FOUND_ROWS()函数:

SELECT SQL_CALC_FOUND_ROWS * FROM ... LIMIT 100;
SELECT FOUND_ROWS();
于 2012-05-31T12:51:31.867 回答
1

如果我理解您的需求(我理解为您想要有限查询的结果加上整个表中的行数),这可以通过SELECT子查询或JOIN针对子查询来完成。由于您只期望从计数查询返回一行,因此您可以使用笛卡尔连接(不带ON子句)。然后,所有行的计数显示为每列的相同值。

SELECT
  cars.*,
  carcount.numcars
FROM
  cars
  JOIN (SELECT COUNT(*) AS numcars FROM cars) carcount
LIMIT 20

会产生类似的结果

make     model     numcars
ford     focus     100
ford     model t   100
...
...
20 rows, numcars always = 100
于 2012-05-31T12:51:36.047 回答