我是mysql的新手,一直在为一个项目学习mysql。我有一个如下的表(表1),我需要它的输出作为表2。
Table 1: Input Table
+----+----------+-----+-----------+----------+
| ID | FRUIT_TYPE | FRUIT | CREATED_AT
+----+----------+-----+-----------+----------+
| 1 | Drupes | plums | 2020-06-12 25:10:10
| 2 | Drupes | peaches | 2020-06-11 25:10:10
| 3 | Drupes | olives | 2020-06-11 24:10:10
| 4 | Berries | grapes | 2020-06-08 25:10:10
| 5 | Pomes | apples | 2020-06-07 25:10:10
| 6 | Pomes | pears | 2020-06-05 25:10:10
| 7 | Hesperidia | lemons | 2020-06-05 24:10:10
| 8 | Hesperidia | oranges | 2020-06-05 23:10:10
+----+----------+-----+-----------+----------+
Table 2: Final Output Desired
+----+----------+-----+-----------+----------+
| ID | FRUIT_TYPE | FRUIT | CREATED_AT
+----+----------+-----+-----------+----------+
| 3 | Drupes | olives | 2020-06-11 24:10:10
| 4 | Berries | grapes | 2020-06-08 25:10:10
| 6 | Pomes | pears | 2020-06-05 25:10:10
| 8 | Hesperidia | oranges | 2020-06-05 23:10:10
+----+----------+-----+-----------+----------+
输出按created\u at字段排序,如果同一水果类型有多行,则选取created\u at值最少的字段。
例如,在核果的3个值中,只有1行水果是橄榄,创建的值是最少的。
如果发出sql查询,请解释它:p提前谢谢!
1条答案
按热度按时间edqdpe6u1#
一个简单的方法是关联子查询:
带索引的
(fruit_type, created_at)
,这可能也是最有效的方法。