选择具有航行补丁程序更改日期的唯一记录

问题描述 投票:0回答:1

我有一个表,其中包含如下所示的数据(简化)

+-----------+----------------------------+----------------------------+--------------+----------------+
| voyage_id | voyage_start_at            | voyage_end_at              | dest_city_id | depart_city_id |
+-----------+----------------------------+----------------------------+--------------+----------------+
|         3 | 2020-01-06 09:00:00.000000 | 2020-01-07 09:00:00.000000 |        21761 |           1778 |
|         2 | 2020-01-05 09:00:00.000000 | 2020-01-06 09:00:00.000000 |         1778 |           1680 |
|         2 | 2020-01-04 09:00:00.000000 | 2020-01-05 09:00:00.000000 |         1778 |           1680 |
|         2 | 2020-01-03 09:00:00.000000 | 2020-01-04 09:00:00.000000 |         1778 |           1680 |
|         2 | 2020-01-02 09:00:00.000000 | 2020-01-03 09:00:00.000000 |         1778 |           1680 |
|         1 | 2020-01-01 09:00:00.000000 | 2020-01-02 09:00:00.000000 |         1680 |           1677 |
|         1 | 2020-01-01 00:00:00.000000 | 2020-01-01 09:00:00.000000 |         1680 |           1677 |
+-----------+----------------------------+----------------------------+--------------+----------------+

重要的是:

  1. [voyage_start_at]日期与上一次航行的voyage_end_at日期相同>
  2. voyage_id对于目的地和出发城市相同的每一行都是相同的(航程可以分为几行
  3. 我想从一个城市到另一个城市的航行清单,从航行的第一个条目开始的日期为voyage_start_at,从航行的最后一个条目开始的日期为voyage_end_at,所以此示例应如下所示:

+-----------+----------------------------+----------------------------+--------------+----------------+
| voyage_id | voyage_start_at            | voyage_end_at              | dest_city_id | depart_city_id |
+-----------+----------------------------+----------------------------+--------------+----------------+
|         3 | 2020-01-06 09:00:00.000000 | 2020-01-07 09:00:00.000000 |        21761 |           1778 |
|         2 | 2020-01-02 09:00:00.000000 | 2020-01-06 09:00:00.000000 |         1778 |           1680 |
|         1 | 2020-01-01 00:00:00.000000 | 2020-01-02 09:00:00.000000 |         1680 |           1677 |
+-----------+----------------------------+----------------------------+--------------+----------------+

我相信这可以通过MySQL查询获得,所以我试图通过使用DISTINCTJOIN和子查询来获得它,但我根本没有得到它。现在我只是想知道这是可以通过SQL完成的,还是应该从db中获取RAW数据并将其转换为我的需要(我正在使用PHP和TWIG)。

任何有用的提示和想法都将受到赞赏。

我有一个表,其中包含如下所示(简化)的数据+ ----------- + ----------------------- ----- + ---------------------------- + -------------- + ---------------- + | voyage_id | voyage_start_at ...

mysql group-by
1个回答
1
投票

您可以在这里使用聚合:

© www.soinside.com 2019 - 2024. All rights reserved.