首页 新闻 会员 周边

数据库名次处理

1
悬赏园豆:20 [待解决问题]

我现在有一个投票的表,这个表里面有投票的票数,这里面已经有了数据,现在我要增加一个名次的字段,现在我要通过什么处理可以让名次这里面的数据和票数对应。

明天会更好yao的主页 明天会更好yao | 初学一级 | 园豆:100
提问于:2013-11-19 23:41
< >
分享
所有回答(5)
0

先增加名次列,然后按票数排序select* from tb order by ticket_num,外围加个set语句循环更新名字列

大芝麻 | 园豆:4 (初学一级) | 2013-11-19 23:56

在投票的时候,票数在变动,怎么根据票数列自动去把名次设置好

支持(0) 反对(0) 明天会更好yao | 园豆:100 (初学一级) | 2013-11-20 09:06

@明天会更好yao: 这样效率岂不是很低,每有一个人投票一次,你就得把整个表来排个名。还设计多个用户同时投票的对你排名的异常。

你的字段里面已经有了票数字段。以后要获得排名,直接按照这个票数排序查询出结果不就行了吗。多设置一个名次字段,数据冗余了嘛

支持(0) 反对(0) 大芝麻 | 园豆:4 (初学一级) | 2013-11-20 09:15
0

对呀,在获取数据的时候按照票数排序就好了呀.效率和冗余的问题

平常心队长 | 园豆:1113 (小虾三级) | 2013-11-20 09:28

支持(0) 反对(0) 明天会更好yao | 园豆:100 (初学一级) | 2013-11-20 14:11
1

根据排名函数,取出排名,然后 

update t1 set t1.rank=t2.rownum from (select rownum=row_number() over(order by ticket_num desc) from t1) t2 where t1.id=t2.id
幻天芒 | 园豆:37175 (高人七级) | 2013-11-20 13:21
0

SQL Server的排名函数可以满足你的需求:
http://msdn.microsoft.com/zh-cn/library/ms189798.aspx

邀月 | 园豆:25475 (高人七级) | 2013-11-29 11:08
0

三种排序函数,依需求决定可以解决问题

Cygwin_ | 园豆:202 (菜鸟二级) | 2015-01-19 14:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册