请教一条MySql的实现语句

兔子-顾问 2017-09-27 10:14:36
详见已经解决问题的帖子:http://bbs.csdn.net/topics/392268959


谢谢,刚工程师告诉我他用MySql不支持这个语法,之前的在sqlite上可以。
...全文
422 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2017-09-27
  • 打赏
  • 举报
回复
... mysql的帖子没审核通过么,还是没人气呢。
zjcxc 2017-09-27
  • 打赏
  • 举报
回复
另外,排序后的数据,是顺序扫描的,链表数据,晨顺序扫描的,这个对传统的机械硬盘来说,顺序的 IO,可比随机的 IO 效率快得多 而 2 楼的排序字段的做法,也就是借鉴索引的做法,在各条记录之间预留空间,记录移动直接移动到预留的空间,只有当预留空间不够用的时候,才考虑更大范围的数据移动,这个比链表的方式更有效率的了
zjcxc 2017-09-27
  • 打赏
  • 举报
回复
先不管实现 对于查询少,更新多的情况,使用链表的方式可以减少更新的量 但查询多,更新少的情况,每次查询的排序代价都高,那么使用链表的方式反而影响效率了
  • 打赏
  • 举报
回复
不太明白这个需求的具体的应用场景,为什么会有这样的需求
ACMAIN_CHM 2017-09-27
  • 打赏
  • 举报
回复
MYSQL 仅通过SQL语句无法实现这个功能。 即使使用MYSQL中的存储过程递归来解决,也由于递归深度的限制无法实现上千行的链表排序。但ORACLE,SQL SERVER中均可以通过ORALCE的CONNECT ,SQL SERVER中的WITH CTE来实现。 MYSQL建议还是专门一个排序字段。 (id, seqenceNo) ID SEQ 1 100 2 200 3 300 4 400 5 500 6 600 7 700 移动3到5和6 之间,则 update t set seq=( 500+600)/2

56,673

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧