当前第2页 返回上一页
打印行号的SQL语句:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | SELECT
(@rownum := @rownum + 1) AS rownum,
tab.business_id,
tab.device_mac,
tab.capture_time
FROM
captainad_driver_gps_position tab,
(SELECT @rownum := 0) r -- 声明变量
WHERE
1 = 1
AND DATE_FORMAT(
tab.capture_time,
'%Y-%m-%d'
) = '2019-06-28'
ORDER BY
tab.capture_time
|
基于此,我们将目标SQL给写出来,这里我根据我们的实际业务将语句稍微做了整理,脚本大致如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | SELECT
t.business_id,
t.device_mac,
t.capture_time,
t.tdiff
FROM
(
SELECT
r1.business_id,
r1.device_mac,
r1.capture_time,
TIMEDIFF(
r2.capture_time,
r1.capture_time
) AS 'tdiff'
FROM
(
SELECT
(@rownum := @rownum + 1) AS rownum,
tab.business_id,
tab.device_mac,
tab.capture_time
FROM
captainad_driver_gps_position tab,
(SELECT @rownum := 0) r
WHERE
1 = 1
AND DATE_FORMAT(
tab.capture_time,
'%Y-%m-%d'
) = '2019-06-28'
ORDER BY
tab.capture_time
) r1
LEFT JOIN (
SELECT
(@INDEX := @INDEX + 1) AS rownum,
tab.business_id,
tab.device_mac,
tab.capture_time
FROM
captainad_driver_gps_position tab,
(SELECT @INDEX := 0) r
WHERE
1 = 1
AND DATE_FORMAT(
tab.capture_time,
'%Y-%m-%d'
) = '2019-06-28'
ORDER BY
tab.capture_time
) r2 ON r1.business_id = r2.business_id
AND r1.device_mac = r2.device_mac
AND r1.rownum = r2.rownum - 1
) t
WHERE
t.tdiff > '00:00:15'
|
在上面的代码中,我们通过r1.rownum = r2.rownum - 1
来判断两条记录是否是前后行,然后再使用TIMEDIFF
函数来计算时间差,到此,我们的目标就实现了。
想了解更多编程学习,敬请关注php培训栏目!
以上就是MySQL如何计算相邻两行某列差值的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
mac安装mysql图形化工具?
mysql是什么的缩写?
mysql学习之基础操作总结
mysql常用sql语句汇总
navicat如何实现mysql备份与恢复
xammp怎么打开mysql
mysql检查约束怎么写
php连接mysql数据库三种实现方法
redhat下mysql的基本使用方法分享
关于生产库中遇到mysql的子查询示例详解
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » MySQL如何计算相邻两行某列差值