转载注明出处:https://blog.csdn.net/qq_37269835/article/details/97643480
背景
在工作中遇到一个问题,同一个表中相邻的两条记录进行运算,这个用mysql的临时变量给表添加一个临时的自增,通过行号进行匹配然后取数据运算就实现了,不算难,但我用的Dapper框架运行语句的时候一直报“未将对象引用到对象实例”的错误,经过排查发现mysql的临时变量不能用,这就很烦了,写了一上午终于写出来了,把核心语句贴出来,记录一下
实现
直接上代码:
SELECT
ID,
RunStart RunStartTime1,
(
SELECT
RunEnd
FROM
table
WHERE
ID = s.ID
AND RunStart > s.RunStart
ORDER BY
RunStart
LIMIT 1
) RunEndTime2
FROM
table s
ORDER BY
ID,
RunStart;
把排好序的相邻两条记录数据中,第一条的开始时间和第二条的结束时间都放在同一条里面了,把这个当做一个新表来写就可以为所欲为了
搞定