mysql 利用自增数据项的方法,对同一个表有某种关联的数据进行处理。(利用增加一项的方法)

问题背景:

    stage表有app_id,stage_id,submission_time等数据项。要求对该表的指定app_id的所有stage_id ,按submission_time 从小到大排序,并且相邻的两项进行做差。

另一个描述如下:

  对同一个app_id的所有stage_id,按submission_time排序,第一个stage_id的submission_interval=0;
第二个stage_id的submission_interval=(第二个stage_id的submission_time-第一个stage_id的submission_time),也就是,第二个stage_id到第一个stage_id的时间间隔。。。依次类推。
select a.app_id, a.stage_id,  a.submission_time, count(*) 

子句:(利用增加一项的方法,增加了rownum字段
select a.app_id, a.stage_id,  a.submission_time, count(*) as rownum  
from stage a ,stage b where a.app_id="XXXXXXX" and b.app_id=a.app_id 
and  a.submission_time > b.submission_time   
group by a.app_id, a.stage_id , a.submission_time 
说明:按submission_time排序,submission_time项是不相同的。

表a 和 表b(同一个表) 进行笛卡尔积,选择
a的每一项submission_time 大于 b的submission_time所有项分别有
0,1,2.。。。。。。。。。。。。
所以count(*) as rownum的序号可以作为submission_time的排序。

语法形式:
select * from A right join B on 条件 group by 项。

select B.submission_time-A.submission_time  from 
(select a.app_id, a.stage_id,  a.submission_time, count(*) as rownum  from stage a ,stage b where a.app_id="XXXXXXXXXX" and b.app_id=a.app_id  and a.submission_time > b.submission_time   group by a.app_id, a.stage_id , a.submission_time  ) as A  
right  join  
(select a.app_id, a.stage_id, a.submission_time,  count(*)  as rownum  from stage a ,stage b where a.app_id="XXXXXXXXXX" and b.app_id=a.app_id  and a.submission_time > b.submission_time   group by a.app_id, a.stage_id , a.submission_time   ) as B    
on A.rownum+1=B.rownum  
group by B.rownum ;





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值