小编典典

SQL:使用LIMIT查询时计算匹配结果的数量

sql

假设users我的MySQL DB中的表包含大量条目。

我需要遍历所有用户,但是我想一次仅执行大块操作(即使用LIMITOFFSET):

SELECT * FROM users LIMIT 100 OFFSET 200

是否有可能知道查询中匹配的用户总数,但仅返回LIMIT个用户?

换句话说,是否可以在不进行单独查询的情况下提前知道用户总数?


阅读 172

收藏
2021-04-28

共1个答案

小编典典

您可以使用SQL_CALC_FOUND_ROWSFOUND_ROWS()在(几乎)一个查询中进行操作:

SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 100 OFFSET 200;
SELECT FOUND_ROWS();

尽管您仍然有两个结果集,但实际查询仅执行一次,从而避免了重复编码和可能浪费的CPU周期。

2021-04-28