当前位置:首页 > SQL > 正文内容

Mysql同时计算符合条件的记录总数,并且查询出数据结果集,不考虑LIMIT子句限制

高老师3年前 (2023-09-28)SQL764

我们正常情况在进行数据分页时一般会通过count查询总条数,limit查询当前页数据,完成数据数据分页。今天学习的是如何一次性查询完成,这是从wordpress中学习到的。先看看下面的SQL:

SELECT 
	SQL_CALC_FOUND_ROWS
	wp_posts.ID 
FROM
	wp_posts
	LEFT JOIN wp_term_relationships ON ( wp_posts.ID = wp_term_relationships.object_id ) 
WHERE
	1 = 1 
	AND ( wp_term_relationships.term_taxonomy_id IN ( 2 ) ) 
	AND ((
			wp_posts.post_type = 'post' 
		AND ( wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private' ))) 
GROUP BY
	wp_posts.ID 
ORDER BY
	wp_posts.post_date DESC 
	LIMIT 0,
	10;
	
SELECT FOUND_ROWS();

分页输出数据:

678458
678457
678456
678455
678454
678453
678452
678451
678450
678449

查询条数输出数据:67w数据

678385

该查询语句从wp_posts表中选取了wp_posts.ID这一列,并通过LEFT JOIN与wp_term_relationships表进行关联。查询条件包括:term_taxonomy_id为2、post_type为'post'且post_status为'publish'或'private'。GROUP BY子句将结果按照wp_posts.ID进行分组,ORDER BY子句按照wp_posts.post_date降序排序。LIMIT子句指定了返回结果的偏移量0和数量10。

注意,通过使用SQL_CALC_FOUND_ROWS,该查询语句会同时计算出满足条件的记录总数,可以通过执行SELECT FOUND_ROWS()获取这个总记录数。

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/631.html

分享给朋友:

“Mysql同时计算符合条件的记录总数,并且查询出数据结果集,不考虑LIMIT子句限制” 的相关文章

Mysql exists型子查询

Mysql exists型子查询

需求查询出存在商品的商品分类.    先看看分类表:id(分类的id)    catename(分类名) 1         手机 2 &n...

主键primary key是否必须和auto_increment 一起出现

主键primary key是否必须和auto_increment 一起出现

    一般情况下,绝大部分,我们的主键是数字,1 2 3 4...所以我们才让它递增.这并不意味着,他们两个必须要绑定在一起使用.例如我还想将用户表的email字段设置为主键,但是并没有必要为其设置自增。    因此可...

mysql diff,mysqldiff 安装,mysqldiff 用法

mysql diff,mysqldiff 安装,mysqldiff 用法

项目和第三方系统对接,由于第三方开发人员属于兼职,数据库结构不一致的问题只能我来处理。此处文章用本地模拟演示。数据库资料:1号服务器:  账号root 密码root  IP:127.0.0.1  数据库名称:data1 2号服务器...

inner join 和 form a,b区别和速度

inner join 和 form a,b区别和速度

在项目中发现大量的form连接表,就开始质疑inner join 和 form a,b的性能问题。找到一份有价值的资料,特别记录:ANSI SQL规范首选INNER JOIN语法。此外,尽管使用WHERE子句定义联结的确比较简单,但是使用明确的联结语法能够确保不会忘记联结条件,有时候这样做也能影响性...

mysql null转空字符串,mysql null转0

mysql null转空字符串,mysql null转0

项目中查询数据部分字段出现null,影响到了排序,但是由于没有数据库权限,还想将null转为其他值表示;例如现有表member的原始数据:SELECT  *  FROM  memberid    &n...

mysql 自定义排序,mysql 自定义字段排序,mysql 强制自定义排序

mysql 自定义排序,mysql 自定义字段排序,mysql 强制自定义排序

通常我们使用自定义排序的语法是:ORDER BY FIELD(`字段名称`, 值1, 值2, 值3),但是如果我想强制值1到值3永远在前面,这个语法是满足不了的.(1).基本的会员数据表:id      name  &n...