select id,integral,addtime from cos_member_vip order by integral desc,addtime asc
成都创新互联公司主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设公司、程序开发、网站优化、微网站、小程序设计等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都做网站、网站制作、成都外贸网站建设、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。
--如果需要生成以积分为最高优先,其次以时间为从高到低为条件生成个排名字段,可用
--ROW_NUMBER() OVER ()函数
按照并列且占位。
mysql按照并列且占位的规则来排名,例如96分应该是第四名,95分是第6名。
mysql排名并列即相同的值,相同的值保留重复名次,遇到下一个不同的值,跳跃到总共的排名。
mysql除了最新版8 实现了开窗函数可以直接实现,低版本的排名是比较复杂的,但是可以利用自定义变量实现。具体很难讲清楚,我给你举个例子吧。
set @rank:=0;
select *,@rank:=@rank+1 from (select topid,count(*) as cnt from tc_vote group by topid) tv order by cnt
因为mysql里没有top方法,使用top会报语法的错误,
mysql提供了limit方法,可以达到同样的效果。
select?*?from?table?order?by?id?desc?limit?10;
SELECT
obj.user_id,obj.score,@rownum := @rownum + 1 AS rownum
FROM
(
SELECT
user_id,
score
FROM
`sql_rank`
ORDER BY
score DESC
) AS obj,
(SELECT @rownum := 0) r
执行的结果如下图: