MySQL自定义变量实现row_number分析函数的问题示例
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,小编给大家分享一下MySQL自定义变量实现row_number分析函数的问题示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MySQL经常用自定义变量实现复杂查询,比如row_nu
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
网络安全 心得体会400
数据库case转换
vfp 读取某网页数据库
校园宽带网络安全检查
网络安全文明教育标语
光网络技术考试试题
计算机网络技术证书有什么用
服务器开机风扇响
审计网络安全
CNKI数据库总结体会
数据库项目管理师好考吗
系统数据库的使用说明怎么写
智慧环卫软件开发费用
java实现服务器负载均衡
软件开发培训直播
网络安全法的开始实行时间
电子商务网络技术包括什么
断言是软件开发中一种常见的
数据库系统界面设计
云服务器平台搭建方案
服务器中arp病毒
嵌入系统软件开发流程
服务器信息管理软件排行
老式台式电脑nas服务器
基础地理数据库在国外发展现状
定安软件开发
通付盾 发布网络安全
前端数据库开发面试题
法律 数据库
华为软件开发案例分析