MySQL自定义变量实现row_number分析函数的问题示例
发表于:2024-12-05 作者:千家信息网编辑
千家信息网最后更新 2024年12月05日,小编给大家分享一下MySQL自定义变量实现row_number分析函数的问题示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MySQL经常用自定义变量实现复杂查询,比如row_nu
千家信息网最后更新 2024年12月05日MySQL自定义变量实现row_number分析函数的问题示例
小编给大家分享一下MySQL自定义变量实现row_number分析函数的问题示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
MySQL经常用自定义变量实现复杂查询,比如row_number按组加行号的功能等.
但是这里面存在一个天坑.不可谓不深
先看试验
create table tmp_num( gid int, score int);create table tmp_var( gid varchar(32), score int); insert into tmp_numselect id%4,ceil(1000*rand())from nums where id<=20;insert into tmp_var select concat('组',gid),score from tmp_num;
两个表, 只是分组的类型不一样,一个分组是 字符串,另外一个是整形.
首先查询分组是整形的情况
select t1.gid,t1.score,case when @gid=gid then @rn:=@rn+1 when @gid:=gid then @rn:=1 else @rn:=1 end rnfrom ( select * from tmp_num ,(select @gid:=0,@rn:=0) vars order by gid,score) t1;
如果其他的程序使用 该自定义变量查询字符串分组的情况,则会出现bug
select t1.gid,t1.score,case when @gid=gid then @rn:=@rn+1 when @gid:=gid then @rn:=1 else @rn:=1 end rnfrom ( select * from tmp_var ,(select @gid:='',@rn:=0) vars order by gid,score) t1;
在多个项目共用连接池的情况下,万一出现这种情况,极难排查
等排查出来,生产环境的错误都不知道持续多少天了,
那时候就尴尬了,错误排除了,人也被开除了
所以还是 58处理的方式比较好,一刀切的禁用自定义变量
看完了这篇文章,相信你对"MySQL自定义变量实现row_number分析函数的问题示例"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
变量
情况
分组
查询
函数
示例
问题
分析
字符
字符串
篇文章
错误
复杂
尴尬
两个
功能
只是
多个
完了
常用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
c 引用数据库中的数据
破坏金融网络安全
英语影视字幕数据库
易被忽视的网络安全
杨骥东软件开发中心
网络安全及信息系统安全保障研究
黑客攻击服务器安全吗
中央网络安全法
安徽服务器防火墙厂家
ipadvpn服务器
几种常见数据库
誉游网络技术有限公司电话
电脑软件数据库怎么找
sql pl连接数据库
技术栈方向数据库
湖南省科技公司软件开发
微软软件开发怎么协作的
网络安全护航成长作文350字
许昌网络技术产品介绍
数据库二维关系表
同步服务器时间失败
上海新弋网络技术有限公司怎么样
服务器管理员帐号忘记怎么办
北京云搜网络技术有限公司
系统分析师 与软件开发
psv数据库文件下载
客户存款数据库
软件开发 架构图虚线代表什么
网络安全宣传周第二天
智能语音服务器定做