首先是想要对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 的自定义变量 @的问题解决相关推荐

  1. MySQL中实现rank排名查询

    MySQL中实现rank排名查询 1.基本知识: 2.升序排列,排名继续增加 3.降序排列,排名继续增加 4.升序排列,排名不跳级,继续+1,示例一 5.升序排列,排名不跳级,继续+1,示例二 6.升 ...

  2. 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...

    我期待从不同服务器连接两个不同的数据库.此外,我想运行一个查询,从两个数据库中获取数据到一个单一的结果.我正在使用mysql在PHP脚本中执行此操作.这里是如何很期待做[没有成功:)]如何连接多个数据 ...

  3. mybatis mysql 批量更新_mysql批量update更新,mybatis中批量更新操作

    在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造 ...

  4. mysql 分组top_MySQL:如何查询出每个分组中的 top n 条记录?

    问题描述 需求: 查询出每月 order_amount(订单金额) 排行前3的记录. 例如对于2019-02,查询结果中就应该是这3条: 解决方法 MySQL 5.7 和 MySQL 8.0 有不同的 ...

  5. 在每个运行中运行多个查询_在Kubernetes中运行OpenEBS

    什么是OpenEBS? 现在,OpenEBS是kubernetes下与容器原生和容器附加存储类型相关通用的领先开源项目之一. 通过为每个工作负载指定专用的存储控制器,OpenEBS遵循容器附加存储或C ...

  6. 地壳中元素含量排名记忆口诀_地壳中含量最多的元素是什么?地壳中元素含量排名口诀...

    地壳,乃地质术语,是指由岩石组成的固体地壳,是地球固体圈的最外层,也是岩石圈的重要组成部分.那么地壳中含量最多的元素是什么呢?以及地壳中元素含量排名口诀又是什么呢? 地壳中含量最多的元素 从地震波的研 ...

  7. 地壳中元素含量排名记忆口诀_地壳中元素含量排名

    地壳中元素含量排名:氧.硅.铝.铁.钙.钠.钾.镁.其中最高的元素是氧,占约百分之48.6,其次是硅占约百分之26.4. 氧气是地壳中最丰富的元素,氧气在地壳中占467,100ppm(百万分之一),或 ...

  8. 地壳中元素含量排名记忆口诀_地壳中元素含量_地壳中元素含量口诀

    地壳中元素含量 下面有关硅的叙述中,正确的是A.光导纤维是以硅酸盐为主要原料制成的B.硅是构成矿物和岩石的主要元素,硅在地壳中的含量在所有的元素 问题补充:试题难度:困难试题类型:选择题试题内容:下面 ...

  9. mysql临时表(可以将查询结果存在临时表中)

    一.创建临时表可以将查询结果寄存.报表制作的查询sql中可以用到. (1)关于寄存方式,mysql不支持:select * into tmp from maintenanceprocess (2)可以 ...

最新文章

  1. 使用node.js构建命令行工具
  2. 数据库-null值和notnull操作
  3. C++的Matlab接口
  4. python 时分秒毫秒_第一篇:Python处理时间日期
  5. c++语言截取字符串,C/C++知识点之C语言截取字符串
  6. python运算符解释_Python运算符的详细介绍
  7. 职工信息管理系统设计c语言,c语言之职工信息管理系统设计.doc
  8. H3CSE园区-SSH
  9. HDB3码:快速上手步骤实例
  10. 佳能Canon PIXMA MP492 打印机驱动
  11. 全网首发,克莱斯勒大捷龙jeep道奇DIY数码碟盒增加USB和蓝牙播放音乐功能使用原车接口无损改装
  12. 个人网站建设教程|本地网站环境搭建|网站制作教程
  13. Unity5.3官方VR教程重磅登场-系列5 VR中的运动
  14. python统计元音字母个数_Quzh[python]统计元音字母——输入一个字符串,统计处其中元音字母的数量。...
  15. 领导力包括哪些能力?如何提升领导力?
  16. 上交计算机系专硕学费,上海交通大学2021级专硕学费再涨,最高翻3倍!@上海考研党...
  17. 网络安全与渗透:内网渗透,Cobalt_Strike(十三)此生无悔入华夏,男儿何不带吴钩
  18. 学习笔记---------安卓动画
  19. matplotlib.plt.subplot()用法
  20. 小程序「Github开源社区」

热门文章

  1. linux 检测ssd 4k对齐,linux查看硬盘4K对齐方法
  2. c/c++进阶之爱恨交织的临时对象: 二、天使与魔鬼
  3. 秦皇岛集训,ACM比赛第一场
  4. 2022/08/15 吉软 MySQL数据库(1)
  5. Fama-Macbeth回归图形化:EAP.fama_macbeth.Fama_macbeth_regress.plot()
  6. java环境jdk配置
  7. pythonif多个条件同时满足_Python if有多个条件怎么办
  8. 氨基/请加/羧基/生物素功能化水溶性CdSeQds,CdTeQds,CdSe/ZnSQds,ZnOQds,CuInS/ZnSQds量子点
  9. cad图纸问号怎么转换文字_cad打开后图形文字显示问号该怎么办?
  10. 网站降权有什么原因,如何解决恢复?