Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql选择子行(行,行-1)_Mysql - Fatal编程技术网

Mysql选择子行(行,行-1)

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

如何从用户中选择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   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