求高手解决!!!

sfsafsqfsaf 2013-01-31 04:03:50
现在数据库有两列(Id,Rank),一般情况下数据是这样的
Id Rank
1 1
2 2
3 4
4 3
5 5
Rank是一个排名,正常情况是不会重复。
现在的问题是Rank重复了,也会有缺失,如:
Id Rank
1 1
2 1
3 3
4 3
5 5
6 6
7 8
8 8
9 8
10 9
有什么办法可以让重复的排名改为缺失的排名,改成下面这样:
Id Rank
1 1
2 2
3 3
4 4
5 5
6 6
7 8
8 7
9 10
10 9


求高手们解决!!!
...全文
325 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2013-02-17
  • 打赏
  • 举报
回复
数据要有代表性,比如上述数据直接用ID就可以了
sfsafsqfsaf 2013-02-15
  • 打赏
  • 举报
回复
引用 1 楼 WWWWA 的回复:
不知道你的排序规则,直接用变量重新生成序号不行? 估计用SP来处理
排序规则是相对排序不变填充缺失的排名,如下面的表id为2的排名比id为3和4的排名高 Id Rank 1 1 2 1 3 3 4 3 处理后就变成 Id Rank 1 1 2 2 3 3 4 4
conqweal 2013-02-01
  • 打赏
  • 举报
回复
SELECT * FROM test1 ORDER BY ( id=rank ) DESC,id asc
conqweal 2013-02-01
  • 打赏
  • 举报
回复
SELECT * FROM test1 ORDER BY IF(id=rank,1,0) desc
WWWWA 2013-02-01
  • 打赏
  • 举报
回复
不知道你的排序规则,直接用变量重新生成序号不行? 估计用SP来处理
ACMAIN_CHM 2013-02-01
  • 打赏
  • 举报
回复
用程序解决比较容易。 select * from xx order by Rank 然后遍历记录,可以得到当前重复的记录和缺失的记录,然后进行修改。
rucypli 2013-02-01
  • 打赏
  • 举报
回复
我只能说太麻烦了按照楼主的规则

56,940

社区成员

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

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