MySQL自定义变量实现row_number分析函数的问题示例
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下MySQL自定义变量实现row_number分析函数的问题示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MySQL经常用自定义变量实现复杂查询,比如row_nu
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
南京欣网互联网络科技
互联网科技网
互联网科技产业
今日互联网科技
友谊互联网络科技
亿人帮互联网科技
互联网科技视频素材
互联网科技公司介绍
中国互联网金融科技基金
互联网科技生活的内容
北京华百购互联网科技有限公司
宁夏科技产业互联网案例
宜昌元轩互联网科技有限公司
哈尔滨屹滨互联网科技有限公司
洛阳昕诺飞互联网科技有限公司
上海同邻互联网科技有限公司规模
互联网科技职业技能培训学校
科技信息时代互联网发展
悟空问答互联网科技
承德科技产业互联网平台
深圳科技互联网
期待互联网科技
远拓互联网科技
苏州大垚互联网科技
广州紫鲸互联网科技
重庆威客帮互联网科技
燊美集互联网科技有限公司
半导体是互联网高科技吗
互联网科技手机排行榜
恒生科技互联网指数十大成分股