求高手解决!!!

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


求高手们解决!!!
...全文
268 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
我只能说太麻烦了按照楼主的规则
  • 打赏
  • 举报
回复
相关推荐
发帖
MySQL
加入

5.5w+

社区成员

MySQL相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2013-01-31 04:03
社区公告
暂无公告