假设我的MySQL数据库中的users
表包含大量条目。
我需要浏览所有用户,但我想一次只打包(例如使用LIMIT
和OFFSET
):
SELECT * FROM users LIMIT 100 OFFSET 200
是否可以知道查询中匹配的用户总数,但只返回LIMIT号码?
换句话说,我是否可以预先知道有多少用户,而无需单独查询?
答案 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>