MySQL5.7实现分组排序

文章目录


前言

`

MySQL5.7版本没有row_number()over()函数,MySQL8以上版本才有,但是MySql5.7安装的版本较多,在5.7如何进行排序分组。


一、准备数据

sql 复制代码
 CREATE TABLE POSTS(POST_ID INT,
				   USER_ID INT, -- 用户ID
				   CATEGORY_ID INT,-- 分类ID
				   POST_TITLE VARCHAR(400), 
				   CREATE_TIME DATE, -- 创建时间
				   LAST_EDIT_TIME DATE, -- 最后编辑时间
				   VIEW_COUNT INT,-- 访问量
				   REPLY_COUNT INT -- 回复量
				   );
				  
	
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(1,1,1,'标题1',now(),now(),100,400);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(2,1,1,'标题2',now(),now(),200,300);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(3,2,1,'标题3',now(),now(),300,200);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(4,2,1,'标题4',now(),now(),400,100);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(5,2,1,'标题5',now(),now(),500,100);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(6,1,2,'标题4',now(),now(),600,100);
INSERT INTO POSTS(POST_ID,USER_ID,CATEGORY_ID,POST_TITLE,CREATE_TIME,LAST_EDIT_TIME,VIEW_COUNT,REPLY_COUNT)VALUES(7,2,2,'标题5',now(),now(),700,100);

二、查询

根据查询各个分类的访问量的排名

sql 复制代码
SELECT A.*,@last :=IF(@FIRST = A.CATEGORY_ID, @last + 1, 1 ) AS rn, @FIRST := A.CATEGORY_ID 
FROM POSTS A,(SELECT @last := 0, @FIRST := NULL ) B
ORDER BY A.CATEGORY_ID,VIEW_COUNT DESC;
相关推荐
llilian_1610 小时前
IRIG-B码产生器立足用户痛点,提供精准授时解决方案
大数据·数据库·功能测试·单片机·嵌入式硬件·测试工具
zuoerjinshu15 小时前
sql实战解析-sum()over(partition by xx order by xx)
数据库·sql
NocoBase16 小时前
【2.0 教程】第 1 章:认识 NocoBase ,5 分钟跑起来
数据库·人工智能·开源·github·无代码
Hoshino.4118 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
Oueii19 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
未来龙皇小蓝19 小时前
【MySQL-索引调优】11:Group by相关概念
数据库·mysql·性能优化
2401_8318249620 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
njidf20 小时前
Python日志记录(Logging)最佳实践
jvm·数据库·python
twc82920 小时前
大模型生成 QA Pairs 提升 RAG 应用测试效率的实践
服务器·数据库·人工智能·windows·rag·大模型测试
@我漫长的孤独流浪20 小时前
Python编程核心知识点速览
开发语言·数据库·python