Heim >Datenbank >MySQL-Tutorial >Wie wähle ich in einem SQL-Join nur die aktuellsten Standortdaten aus?
Auswählen des maximalen Datums innerhalb eines Join-Vorgangs
Um historische Standorte für einen bestimmten Datensatz abzurufen, berücksichtigen Sie die folgende Abfrage:
SELECT l.location, t.transaction_id, t.date_modified FROM transactions AS t INNER JOIN ( SELECT received_id, MAX(date_modified) AS maxmodify FROM transactions GROUP BY received_id ) AS max_record ON ( t1.received_id = max_record.received_id ) INNER JOIN locations AS l ON ( l.location_id = t.location_id ) INNER JOIN received AS r ON ( r.received_id = t.received_id ) WHERE t.received_id = '1782' ORDER BY t.date_modified DESC;
Diese Abfrage gibt eine Liste von Orten für einen bestimmten Datensatz zurück, enthält jedoch mehrere Einträge für denselben Ort und dasselbe Datum. Um sicherzustellen, dass für jeden Standort nur das Datum der letzten Änderung angezeigt wird, verwenden Sie die folgende Abfrage:
SELECT t1.received_id, t1.transaction_id, t1.date_modified, l.location FROM transactions t1 JOIN ( SELECT received_id, MAX(date_modified) AS maxmodify FROM transactions GROUP BY received_id ) AS max_record ON ( max_record.received_id = t1.received_id AND max_record.maxmodify = t1.date_modified ) JOIN locations AS l ON ( l.location_id = t1.location_id ) JOIN received AS r ON ( r.received_id = t1.received_id ) WHERE t1.received_id = '1782' ORDER BY t1.date_modified DESC;
Die Schlüsseländerung ist das Hinzufügen der Join-Bedingung, die sicherstellt, dass der ausgewählte date_modified-Wert für jeden Datensatz der Maximalwert ist . Dadurch wird sichergestellt, dass nur die zuletzt aktualisierten Standortinformationen angezeigt werden.
Das obige ist der detaillierte Inhalt vonWie wähle ich in einem SQL-Join nur die aktuellsten Standortdaten aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!