我在mysql数据库中有一个表"travel_data",其中包含三个相关列:
+--------------------------+
| from | to | date |
+--------------------------+
|City1 | City2 | 2015-12-12|
|City3 | City4 | 2016-12-12|
|City1 | City2 | 2015-06-06|
|City3 | City4 | 2017-01-01|
+--------------------------+
Run Code Online (Sandbox Code Playgroud)
(加上我目前不需要的其他一些colums).
我正在寻找一个查询,允许我在一个查询中尽可能获得每行每个行程的第一个和最后一个日期,例如:
+------------------------------------------------+
|from | to | firstTravelDate | LastTravelDate|
+------------------------------------------------+
|City1 | City2 | 2015-06-06 | 2015-12-12 |
|City3 | City4 | 2016-12-12 | 2017-01-01 |
+------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
我在一个查询中搜索"mysql select maximum minimum",但是那里的解决方案,因为它们起作用,每个表返回mix/max; 我需要from/to的每个可能组合的最小/最大值.这让我感到困惑,我甚至没有开始工作查询.这只需要在MySql上运行,因此不需要符合标准的解决方案.
(欢迎对标题进行改进,我认为标题不完全涵盖实际问题).
正如Gordon在评论中指出的那样,这是一个简单的聚合查询.您需要执行以下操作
SELECT `from`, to,
MIN(date) AS firstTravelDate,
MAX(date) AS LastTravelDate
FROM travel_data
GROUP BY `from`, to;
Run Code Online (Sandbox Code Playgroud)
您可能需要对变量"FROM"和"TO"进行反向标记,因为这些是MySQL中的保留关键字.
此外,为了"教你钓鱼",我建议你看一下https://sqlschool.modeanalytics.com/.有很多SQL资源,Mode的重点是PostgreSQL而不是MySQL ...但它也非常好,非常有趣.