mysql分组去重排序_Mysql利⽤groupby分组排序
昨天有个需求对数据库的数据进⾏去重排名,同⼀⽤户去成绩最⾼,时间最短,参与活动最早的⼀条数据进⾏排序。我们可以利⽤mysql中的group by的特性。
mysql的group by与oracle有所不同,查询得字段可以不⽤写聚合函数,查询结果取得是每⼀组的第⼀⾏记录。
groupby分组利⽤上⾯的特点,可以利⽤mysql实现⼀种独特的排序;
⾸先先按某个字段进⾏order by,然后把有顺序的表进⾏分组,这样每组的成员都是有顺序的,⽽mysql默认取得分组的第⼀⾏。从⽽得到每组的最值。
select id, (@rowno := @rowno + 1) as rank,
score,
(c.end_time - c.start_time) as timeconsuming,
start_time,
real_name,
tel,
expiry_code
from (select *
from (select *
from t_q_order b
where b.score > 0
l is not null
order by b.score desc,
(b.end_time - b.start_time) asc,
b.start_time asc) as a
group l
order by a.score desc,
(a.end_time - a.start_time) asc,
a.start_time asc)
as c,
(select @rowno := 0) t
where (c.end_time - c.start_time) > 5 limit 0,50;
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持萬仟⽹。
如您对本⽂有疑问或者有任何想说的,请点击进⾏留⾔回复,万千⽹友为您解惑!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论