MYSQL获取开始时间等于先前记录结束时间的最后一条记录

时间:2017-06-14 12:38:44

标签: 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-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_order会是什么,因为彼此之间可能会有很多工作。

你知道我怎么会发现这个吗?

1 个答案:

答案 0 :(得分:0)

尝试选择在最后一个开始时没有结束的最小Id,例如:

secant(sec) / cosecant(cosec)

如果您可以使用DateTime而不是2个单独的字段,这会更容易,但