Mysql选择子行(行,行-1)
如何从用户中选择user\u id,子(行,行-1)其中user\u id=@userid id为1、3、4、10、11、23…(非++)的my table用户 我希望Mysql选择子行(行,行-1),mysql,Mysql,如何从用户中选择user\u id,子(行,行-1)其中user\u id=@userid id为1、3、4、10、11、23…(非++)的my table用户 我希望 --id-----------user_id--------unixtime-------**SUB(row, row -1)** 635918634 1529906793 1374253286 0 635918635 1529906793 1374253287 1 635957809
--id-----------user_id--------unixtime-------**SUB(row, row -1)**
635918634 1529906793 1374253286 0
635918635 1529906793 1374253287 1
635957809 1529906793 1374253583 296
635957810 1529906793 1374253883 300
635957811 1529906793 1374254183 300
使用SUB(row,row-1):(unixtime row-unixtime near row before)使用用户变量添加序列(使用两个不同的起始序列号),然后加入序列
SELECT Sub1.id, Sub1.user_id, Sub1.unixtime, Sub1.unixtime - IFNULL(Sub2.unixtime, 0)
FROM
(
SELECT id, user_id, unixtime, @row = @row + 1 AS RowNum
FROM SomeTable
CROSS JOIN (SELECT @row = 1) t
ORDER BY user_id, unixtime
) Sub1
LEFT OUTER JOIN
(
SELECT id, user_id, unixtime, @row = @row + 1 AS RowNum
FROM SomeTable
CROSS JOIN (SELECT @row = 0) t
ORDER BY user_id, unixtime
) Sub2
ON Sub1.RowNum = Sub2.RowNum
(未测试)请您用更多信息重新表述问题。问题是
row-1
,描述是row+1
。SUB(row,row+1)
是什么意思?我编辑文章解释,请查看并帮助我^^,你正在选择SUB(row,row+1)
,在你的表格中有SUB(row,row-1)
。我想你可以理解为什么我们会困惑。即使他们是一样的,也没有任何意义。你想让它自动递增吗?我看不出这5行如何生成0
,1
,296
,300
和300
(再次)?
SELECT Sub1.id, Sub1.user_id, Sub1.unixtime, Sub1.unixtime - IFNULL(Sub2.unixtime, 0)
FROM
(
SELECT id, user_id, unixtime, @row = @row + 1 AS RowNum
FROM SomeTable
CROSS JOIN (SELECT @row = 1) t
ORDER BY user_id, unixtime
) Sub1
LEFT OUTER JOIN
(
SELECT id, user_id, unixtime, @row = @row + 1 AS RowNum
FROM SomeTable
CROSS JOIN (SELECT @row = 0) t
ORDER BY user_id, unixtime
) Sub2
ON Sub1.RowNum = Sub2.RowNum