MySQL中实现rank排名查询以及在Mybatis中使用 mysql 的自定义变量 @的问题解决
首先是想要对mysql数据库中查询到的列表数据进行一个排名,因为有分页排序等一堆条件就想着直接在sql上实现,但MySQL不存在类似于SQL Server或Orcal中的rank()函数,最终决定使用手动定义变量的方式来做
- sql语句中,使用@来定义一个变量。如:@abc
- sql语句中,使用:=来给变量赋值,:@abc:=123,则变量abc的值为123
- sql语句中,if(A,B,C)表示,如果A条件成立,那么执行B,否则执行C,如:@abc := if(2>1,100,200)的结果是,abc的值为100。
先在Navicat上编写sql,,定义curRank 变量初始值为0,每次查询加1
set @curRank := 0;SELECT @curRank := @curRank + 1 as rank, a.uid uid FROM user a ORDER BY a.totalenergy desc
执行成功
然后复制到项目里跑
果然,担心的一幕出现了,mybatis 不支持这种写法!!!
后来经过一系列挣扎(省略号...)
其实mybatis 是支持 自定义变量的
网上这样说:
但是我试了还是不行(后来发现可能是我写错了符号)最终改写:
<select id="selectList" resultType="com.***.Entity"><![CDATA[SELECT @curRank := @curRank + 1 as rank,a.uid uid,a.name name,a.headimg headimgFROM user a, (SELECT @curRank:=0) r]]><if test="ids != null">where a.uid in (${ids})</if>ORDER BY a.totalenergy desc</select>
定义变量SELECT @curRank:=0放到了子查询里,两条sql语句合二为一,最终成功执行
ps:在实验的时候yml文件里的数据库url连接上加了一行&allowMultiQueries=true,如果还是有问题就加上(偷个懒我就不研究了,有明白的小伙伴可留意告知)
MySQL中实现rank排名查询以及在Mybatis中使用 mysql 的自定义变量 @的问题解决相关推荐
- MySQL中实现rank排名查询
MySQL中实现rank排名查询 1.基本知识: 2.升序排列,排名继续增加 3.降序排列,排名继续增加 4.升序排列,排名不跳级,继续+1,示例一 5.升序排列,排名不跳级,继续+1,示例二 6.升 ...
- 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...
我期待从不同服务器连接两个不同的数据库.此外,我想运行一个查询,从两个数据库中获取数据到一个单一的结果.我正在使用mysql在PHP脚本中执行此操作.这里是如何很期待做[没有成功:)]如何连接多个数据 ...
- mybatis mysql 批量更新_mysql批量update更新,mybatis中批量更新操作
在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造 ...
- mysql 分组top_MySQL:如何查询出每个分组中的 top n 条记录?
问题描述 需求: 查询出每月 order_amount(订单金额) 排行前3的记录. 例如对于2019-02,查询结果中就应该是这3条: 解决方法 MySQL 5.7 和 MySQL 8.0 有不同的 ...
- 在每个运行中运行多个查询_在Kubernetes中运行OpenEBS
什么是OpenEBS? 现在,OpenEBS是kubernetes下与容器原生和容器附加存储类型相关通用的领先开源项目之一. 通过为每个工作负载指定专用的存储控制器,OpenEBS遵循容器附加存储或C ...
- 地壳中元素含量排名记忆口诀_地壳中含量最多的元素是什么?地壳中元素含量排名口诀...
地壳,乃地质术语,是指由岩石组成的固体地壳,是地球固体圈的最外层,也是岩石圈的重要组成部分.那么地壳中含量最多的元素是什么呢?以及地壳中元素含量排名口诀又是什么呢? 地壳中含量最多的元素 从地震波的研 ...
- 地壳中元素含量排名记忆口诀_地壳中元素含量排名
地壳中元素含量排名:氧.硅.铝.铁.钙.钠.钾.镁.其中最高的元素是氧,占约百分之48.6,其次是硅占约百分之26.4. 氧气是地壳中最丰富的元素,氧气在地壳中占467,100ppm(百万分之一),或 ...
- 地壳中元素含量排名记忆口诀_地壳中元素含量_地壳中元素含量口诀
地壳中元素含量 下面有关硅的叙述中,正确的是A.光导纤维是以硅酸盐为主要原料制成的B.硅是构成矿物和岩石的主要元素,硅在地壳中的含量在所有的元素 问题补充:试题难度:困难试题类型:选择题试题内容:下面 ...
- mysql临时表(可以将查询结果存在临时表中)
一.创建临时表可以将查询结果寄存.报表制作的查询sql中可以用到. (1)关于寄存方式,mysql不支持:select * into tmp from maintenanceprocess (2)可以 ...
最新文章
- 使用node.js构建命令行工具
- 数据库-null值和notnull操作
- C++的Matlab接口
- python 时分秒毫秒_第一篇:Python处理时间日期
- c++语言截取字符串,C/C++知识点之C语言截取字符串
- python运算符解释_Python运算符的详细介绍
- 职工信息管理系统设计c语言,c语言之职工信息管理系统设计.doc
- H3CSE园区-SSH
- HDB3码:快速上手步骤实例
- 佳能Canon PIXMA MP492 打印机驱动
- 全网首发,克莱斯勒大捷龙jeep道奇DIY数码碟盒增加USB和蓝牙播放音乐功能使用原车接口无损改装
- 个人网站建设教程|本地网站环境搭建|网站制作教程
- Unity5.3官方VR教程重磅登场-系列5 VR中的运动
- python统计元音字母个数_Quzh[python]统计元音字母——输入一个字符串,统计处其中元音字母的数量。...
- 领导力包括哪些能力?如何提升领导力?
- 上交计算机系专硕学费,上海交通大学2021级专硕学费再涨,最高翻3倍!@上海考研党...
- 网络安全与渗透:内网渗透,Cobalt_Strike(十三)此生无悔入华夏,男儿何不带吴钩
- 学习笔记---------安卓动画
- matplotlib.plt.subplot()用法
- 小程序「Github开源社区」
热门文章
- linux 检测ssd 4k对齐,linux查看硬盘4K对齐方法
- c/c++进阶之爱恨交织的临时对象: 二、天使与魔鬼
- 秦皇岛集训,ACM比赛第一场
- 2022/08/15 吉软 MySQL数据库(1)
- Fama-Macbeth回归图形化:EAP.fama_macbeth.Fama_macbeth_regress.plot()
- java环境jdk配置
- pythonif多个条件同时满足_Python if有多个条件怎么办
- 氨基/请加/羧基/生物素功能化水溶性CdSeQds,CdTeQds,CdSe/ZnSQds,ZnOQds,CuInS/ZnSQds量子点
- cad图纸问号怎么转换文字_cad打开后图形文字显示问号该怎么办?
- 网站降权有什么原因,如何解决恢复?