J'ai du mal à trouver une déclaration SQL pour cette situation: Imaginez qu'il y ait plusieurs véhicules sur la route à un moment donné, chacun de ces voyages est dans la table des voyages. Chaque véhicule envoie régulièrement les mises à jour de son emplacement actuel (latitude, longitude)Comment choisir parmi 2 tables et obtenir la valeur la plus élevée d'une table?
Il y a 2 tables: current_position
id | trip_id | update_time | lat | lon
voyages
id | état
current_position a plusieurs mises à jour pour chaque voyage
J'ai besoin pour obtenir des résultats, ayant trip_id, lat, lon
pour chaque voyage qui a le statut = « CONDUIRE » et doit avoir les dernières valeurs à partir de current_position
Dernière valeur Je veux dire valeur la plus élevée de update_time. Quand j'ai essayé le GROUP BY, j'ai obtenu des résultats distincts mais les résultats n'étaient pas toujours les derniers. Je ne peux pas sembler combiner l'ordre par update_time DESC avec GROUP BY trip_id
Donc, s'il y a 300 voyages en cours alors il y aura 300 sous-requêtes dans cette requête? –
la performance devrait être sans problème pour 300 enregistrements retournés. Essayez-le et voyez. – nycdan
DRapp fait un bon point. Vous pouvez probablement utiliser Max (id) au lieu de Max (update_time) et obtenir de meilleures performances sur les grandes tables. – nycdan