У меня есть следующая таблица в sql:
id | trip_id | stop_id | departure_time
----------------------------------------
1 | 1| 1| 06:25:00
2 | 1| 2| 06:35:00
3 | 1| 3| 06:45:00
4 | 1| 2| 06:55:00
Что мне нужно сделать, это определить, где trip_id, как несколько экземпляров определенного stop_id (в данном случае stop_id 2).
Затем мне нужно удалить любые дубликаты, оставив только ту, которая имеет самое позднее время отправления.
Таким образом, с учетом приведенной выше таблицы Id удалите строку с идентификатором 2 и оставьте:
id | trip_id | stop_id | departure_time
----------------------------------------
1 | 1| 1| 06:25:00
3 | 1| 3| 06:45:00
4 | 1| 2| 06:55:00
Мне удалось сделать это с помощью серии SQL-запросов, но я столкнулся с проблемой N + 1, и это заняло целую вечность.
Кто-нибудь может порекомендовать, как я могу сделать это в одном запросе? Или, по крайней мере, идентифицировать все идентификаторы строк, которые нужно удалить в одном запросе?
Я делаю это в ruby на рельсах, поэтому, если вы предпочитаете решение для активной записи, я бы не стал вас ненавидеть за это:)
Заранее спасибо.