Heim >Datenbank >MySQL-Tutorial >Wie verknüpfe ich eine MySQL-Tabelle nur mit der aktuellsten Zeile in einer verwandten Tabelle?

Wie verknüpfe ich eine MySQL-Tabelle nur mit der aktuellsten Zeile in einer verwandten Tabelle?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-01 11:18:11643Durchsuche

How to Join a MySQL Table to Only the Most Recent Row in a Related Table?

MySQL: Nur mit der neuesten Zeile verknüpfen

In diesem Szenario haben Sie die Tabellen customer und customer_data, wobei customer_data einen Verlauf von enthält Änderungen für jeden Kunden. Ihr Ziel besteht darin, Kundeninformationen abzurufen und dabei nur die aktuellste Zeile in customer_data zu verknüpfen.

Um dies zu erreichen, verwenden Sie eine Unterabfrage innerhalb der WHERE-Klausel, um die maximale ID für jeden Kunden in customer_data zu ermitteln. Verknüpfen Sie diese Unterabfrage mit der Kundentabelle mithilfe der LEFT JOIN-Syntax, wie unten gezeigt:

SELECT c.*,
FROM customer AS c
LEFT JOIN customer_data AS d ON d.customer_id = c.customer_id AND d.ID = (
  SELECT MAX(ID)
  FROM customer_data
  WHERE customer_id = c.customer_id
)
WHERE name LIKE '%Smith%'
LIMIT 10, 20;

In dieser Abfrage:

  • LEFT JOIN stellt sicher, dass alle Zeilen aus der Kundentabelle vorhanden sind im Ergebnis enthalten, auch wenn sie keine entsprechende Zeile in customer_data haben.
  • Die Unterabfrage innerhalb der WHERE-Klausel berechnet die maximale ID für jeden Kunden in customer_data.
  • Das Ergebnis der Unterabfrage wird dann mit der ID-Spalte in customer_data verglichen, um nur die aktuellste Zeile auszuwählen.

Dieser Ansatz isoliert effektiv die neuesten Einträge für jeden Kunden und fügt sie zur weiteren Verarbeitung der Kundentabelle hinzu.

Das obige ist der detaillierte Inhalt vonWie verknüpfe ich eine MySQL-Tabelle nur mit der aktuellsten Zeile in einer verwandten Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn