Ich habe zwei Tabellen namens record
und record_history
. Für jeden Datensatz kann es mehr als einen Verlauf geben. Sie können durch id
und verbunden werden record_id
. Ich möchte alle record
Einträge mit den neuesten record_history
Daten erhalten. Ich habe die Abfrage wie folgt erstellt:
SELECT rec.id, rec.name, rech1.data AS last_history_data
FROM record rec
LEFT OUTER JOIN record_history rech1 ON (rec.id = rech1.record_id)
LEFT OUTER JOIN record_history rech2 ON (rec.id = rech2.record_id AND rech2.ts > rech1.ts)
WHERE rech2.id IS NULL
ORDER BY rec.id DESC
Hier bekomme ich die neueste von ts
. Dies funktioniert, solange keine doppelten ts
Einträge vorhanden sind. Wenn der letzte Zeitstempel in wiederholt wird record_history
, gibt diese Abfrage mehr als eine Zeile für einen Datensatz zurück. Wie können wir das Limit hier auf der linken Verknüpfung anwenden, um doppelte Zeilen einzuschränken?
rech2
wird hier verwendet, wählen Sie die erste record_history und mein Bedürfnis nach rech2 soll seinNULL