MYSQL获取上一条记录,其中开始时间等于上一条记录的结束时间

MYSQL获取上一条记录,其中开始时间等于上一条记录的结束时间,mysql,Mysql,我有一个数据库如下 | p_id | p_start_date | p_start_time | p_end_date | p_end_time | p_order | | 2 | 2017-06-01 | 00:00 | 2017-06-01 | 01:00 | 1 | | 4 | 2017-06-01 | 01:00 | 2017-06-01 | 02:15 | 2 | | 1 | 2017-

我有一个数据库如下

| p_id | p_start_date | p_start_time | p_end_date | p_end_time | p_order |
| 2    |  2017-06-01  |     00:00    | 2017-06-01 |   01:00    |   1     |
| 4    |  2017-06-01  |     01:00    | 2017-06-01 |   02:15    |   2     |
| 1    |  2017-06-02  |     00:00    | 2017-06-02 |   01:30    |   3     |
| 3    |  2017-06-03  |     00:00    | 2017-06-03 |   00:30    |   4     |
我想在15分钟内移动p_id 2和4。 我将如何处理以下各项:

UPDATE 
  press as p 
SET 
  p.p_start_date = cast(DATE_ADD(CONCAT(p.p_start_date, ' ', p.p_start_time ), INTERVAL 15 MINUTE) as DATE),
  p.p_start_time = cast(DATE_ADD(CONCAT(p.p_start_date, ' ', p.p_start_time), INTERVAL 15 MINUTE) as TIME),
  p.p_end_date = cast(DATE_ADD(CONCAT(p.p_end_date, ' ', p.p_end_time), INTERVAL 15 MINUTE) as DATE),
  p.p_end_time = cast(DATE_ADD(CONCAT(p.p_end_date, ' ', p.p_end_time), INTERVAL 15 MINUTE) as TIME),
  p.p_order = p.p_order + 1
WHERE 
  p.p_order >= 1 AND p.p_order <= 2
更新
按p
设置
p、 p.p.U开始日期=演员阵容(日期添加(CONCAT(p.p.U开始日期),p.p.U开始时间,间隔15分钟)作为日期),
p、 p.p.U开始时间=演员阵容(添加日期(CONCAT(p.p.U开始时间),p.p.U开始时间,间隔15分钟)作为时间),
p、 p_结束日期=演员阵容(日期添加(CONCAT(p.p_结束日期),p.p_结束时间,间隔15分钟)作为日期),
p、 p.p.U结束时间=演员阵容(日期添加(CONCAT(p.p.U结束时间),p.p.U结束时间,间隔15分钟)作为时间),
p、 p_顺序=p.p_顺序+1
哪里

p、 p\u order>=1和p.p\u order尝试选择最小的Id,该Id不会在最后一个Id启动时结束,例如:

SELECT min(t2.id) from MyTable t1 LEFT JOIN MyTable t2 on t1.id - 1 = t2.id and t1.id >  2 WHERE t1.end_date = t2.start_date and t1.end_time = t2.start_time

如果您可以使用DateTime而不是两个单独的字段,那么会更容易,不过

代码格式如何?这样更好吗?没有意识到没有代码标签会有这么远。@S.Goodwin你是什么意思?(:num8er-我知道2需要更新,因为这是正在进行的工作,但是我如何在不使用php进行大量选择的情况下找到4和任何其他内容,因为我不希望任何内容相互冲突,但我也不希望移动1,因为这不会与第二天发生冲突。