Как объединить порядок по и группировать вместе? условие: упорядочить по одной группе столбцов по другому столбцу - PullRequest
0 голосов
/ 16 марта 2019

У меня есть одна проблема с порядком сортировки и группирования в MySQL.Ниже приведена структура моей таблицы.

+-------------+-----------+-----------+----------------------------+
| driver_id   | lat       | lng       | creation                   |
+-------------+-----------+-----------+----------------------------+
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-13 09:21:39.225873 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-15 12:30:09.608296 |
| TDRV-000021 | 18.659135 | 73.756445 | 2019-03-10 15:38:37.954508 |

Когда я использую следующую команду SQL (Order by Creation desc),

select driver_id, lat, lng, creation from `tabReal Time Location` order by creation desc;

Я получил следующий результат,

+-------------+-----------+-----------+----------------------------+
| driver_id   | lat       | lng       | creation                   |
+-------------+-----------+-----------+----------------------------+
| TDRV-000021 | 20.659180 | 73.756480 | 2019-03-16 08:13:41.155528 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-15 19:44:06.206690 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-15 19:36:25.571260 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-15 19:35:55.115124 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-15 19:35:46.281953 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-15 19:35:00.986849 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-15 19:33:38.370099 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-15 19:32:57.589272 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-15 19:30:24.582391 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-15 19:29:23.809564 |

и когда я использую для объединения порядка и группы по,

select driver_id, lat, lng, creation from `tabReal Time Location` group by driver_id order by creation desc;

+-------------+-----------+-----------+----------------------------+
| driver_id   | lat       | lng       | creation                   |
+-------------+-----------+-----------+----------------------------+
| TDRV-000027 | 18.659180 | 73.756480 | 2019-03-15 13:47:37.338828 |
| TDRV-000021 | 18.659180 | 73.756480 | 2019-03-13 09:21:39.225873 |
+-------------+-----------+-----------+----------------------------+

, но, как вы видите в приведенном выше результате, я получаю неправильный результат, я ожидаю последнее обновление широта, lng как столбец ниже.

+-------------+-----------+-----------+----------------------------+
| driver_id   | lat       | lng       | creation                   |
+-------------+-----------+-----------+----------------------------+
| TDRV-000021 | 20.659180 | 73.756480 | 2019-03-16 08:13:41.155528 |
| TDRV-000027 | 20.659180 | 90.756480 | 2019-03-15 14:07:41.543089 |
+-------------+-----------+-----------+----------------------------+

1 Ответ

1 голос
/ 16 марта 2019

вот один из способов ожидать последнее обновление la

select t.driver_id, lat, lng, order_id  from `tabReal Time Location` t INNER JOIN  (select max(creation) as latest_date,driver_id  FROM `tabReal Time Location` group by  driver_id)d ON t.creation= d.latest_date and d.driver_id = t.driver_id;
...