MySQL替换oracle里rownumber() over(pritition ... order by ...)的方法

Oracle中利用over函数分组求和,以t_name分组,以t_date排序
SELECT id,t_name,t_date,row_number()over(PARTITION BY t_name ORDER BY t_date DESC) rntime 
FROM over_test



MySQL中
SELECT result.id,result.t_name,result.t_date,result.rank rtime FROM (  
  SELECT b.id,b.t_name,b.t_date,@rownum:=@rownum+1 ,  
  IF(@t_name=b.t_name,@rank:=@rank+1,@rank:=1) AS rank,  
  @t_name:=b.t_name  
  FROM (   
  SELECT id,t_name,t_date FROM OVER_TEST ORDER BY t_name ASC ,t_date DESC 
  ) b, 
  (SELECT @rownum :=0 , @t_name := NULL ,@rank:=0) a  
) result;


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29320885/viewspace-1749472/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29320885/viewspace-1749472/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值