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

时间:2010-02-16 16:19:27

标签: sql mysql count limit

假设我的MySQL数据库中的users表包含大量条目。

我需要浏览所有用户,但我想一次只打包(例如使用LIMITOFFSET):

SELECT * FROM users LIMIT 100 OFFSET 200

是否可以知道查询中匹配的用户总数,但只返回LIMIT号码?

换句话说,我是否可以预先知道有多少用户,而无需单独查询?

3 个答案:

答案 0 :(得分:4)

您可以使用SQL_CALC_FOUND_ROWS and FOUND_ROWS()

在(几乎)一个查询中执行此操作
SELECT SQL_CALC_FOUND_ROWS * FROM users LIMIT 100 OFFSET 200;
SELECT FOUND_ROWS();

虽然最终仍然有两个结果集,但实际查询只执行一次,这样可以避免重复编码和可能的CPU周期浪费。

答案 1 :(得分:0)

不幸的是没有。您需要执行两个查询:一个用于获取用户总数,另一个用于获取单页用户。

select count(*) from users;
select * from users limit 0,10;

答案 2 :(得分:0)

在SQL标准中是不可能的。我不太了解mysql,但我认为即使在任何SQL扩展中也不可能。{/ p>