我认为这是一个简单的问题,但谷歌只给我选择和计算结果。
我想知道是否可以从有限制的表中选择并计算通常会受查询影响的所有行。
例如:
我在汽车表中有 100 行,我选择了前 20 行,我想在一个查询中计算汽车表中有多少辆汽车。
提前致谢
使用SQL_CALC_FOUND_ROWS
然后使用FOUND_ROWS()
函数:
SELECT SQL_CALC_FOUND_ROWS * FROM ... LIMIT 100;
SELECT FOUND_ROWS();
如果我理解您的需求(我理解为您想要有限查询的结果加上整个表中的行数),这可以通过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