mysql 实现 上一行减去下一行

本文介绍了在MySQL中如何通过行号计算上一行与下一行的差值,详细解析了两种方法:1) 通过行号进行加减,包括优化后的查询语句,考虑了效率和筛选条件。2) 解释了为何通过limit无法实现此功能,并强调编写SQL应逐步测试,确保逻辑清晰。
摘要由CSDN通过智能技术生成

方法1 :通过行号来进行加减

1.新建表1添加自增行号列(考虑到自增id 有丢失数据现象)

2.复制上表1为表2

3.根据表1、表2行号进行where或者left join on的处理

* where 进行处理的条件为表1表2完全的匹配

*left join on 处理的条件为  左表完全的匹配

#设置内存变量

SET @arownum=0;

SET @brownum=0;

#查询sql
SELECT a.id ,a.terminal_id,a.TIMESTAMP,a.seq-b.seq FROM
( SELECT @arownum:=@arownum+1 AS id ,terminal_id,TIMESTAMP,seq FROM `msg_basic` ORDER BY terminal_id, TIMESTAMP )AS a
LEFT JOIN
( SELECT @brownum:=@brownum+1 AS id ,terminal_id,TIMESTAMP,seq FROM `msg_basic` ORDER BY terminal_id, TIMESTAMP )AS b
ON a.id = b.id+1

#也可新建表

CREATE TABLE tab2 AS SELECT @brownum:=@brownum+1 AS id  ,terminal_id,TIMESTAMP,seq FROM `msg_basic` ORDER BY  terminal_id, TIMESTAMP 

 

方法1优化:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值