mysql5.7中的一个update order by排名问题解决办法(一条sql搞定排名)
来源:互联网 发布:网络客服工资一般多少 编辑:程序博客网 时间:2024/06/05 02:41
在作排序时,发现update中的orderby 不起作用,业务功能:按照syl字段进行降序排名:
在mysql5.6版本中运行的sql如下:
UPDATE (SELECT @a := @a + 1 AS rn, id, syl
FROM t_user_syl h, (SELECT @a := 0
) t where h.day=${day}
ORDER BY syl desc
) t1, t_user_syl t2
SET t2.syl_pm = t1.rn
WHERE t2.id = t1.id
在生产发布时,发现排序不正确(mysql5.7)!经分析,应该是order by 执行的顺序问题,改写sql如下:
UPDATE (SELECT @a := @a + 1 AS rn, id, syl
FROM (
select * from t_user_syl
where day=${day}
ORDER BY syl desc
) h, (SELECT @a := 0 ) t
) t1, t_user_syl t2
SET t2.syl_pm = t1.rn
WHERE t2.id = t1.id;
就是把orderby放到最里面,先排好序,然后再生成排名rn!
这就是5.7作了重要改进后遇到的问题,我们在写这类sql时最好还是按改进的sql方法来写!
- mysql5.7中的一个update order by排名问题解决办法(一条sql搞定排名)
- oracle不连续排名rank() over(order by column desc),连续排名 dense_rank over(order by)
- sql中的order by
- SQL中的Order By
- order by 降序desc,升序asc,排名函数 rank()over()
- SQL排名
- 排名sql
- 排名SQL
- 一条SQL语句查询出成绩名次排名
- 一句SQL搞定合服关卡排名
- SQL中的order by子句
- Oracle Order By后导分页数据重复问题解决办法。
- 排名
- 排名
- 排名
- 排名
- 排名
- 排名
- electron折腾记(二)——关于窗口
- xml解析
- WebSocket 是什么原理?为什么可以实现持久连接
- P1005
- .Net工作流项目实战——前台到后台传值的编码、解码解决方案
- mysql5.7中的一个update order by排名问题解决办法(一条sql搞定排名)
- Java中get,post乱码的区别
- 小希的迷宫(hdu 1272)
- Block 代码块中循环引用问题
- 移动web开发笔记
- 2016-5-9至2016-5-15
- URTracker事务跟踪系统
- stm32 usb host&device
- 火热的函数式编程