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,因为这不会与第二天发生冲突。