Bei zwei Tabellen, customer und customer_data, wobei letztere eine historische Aufzeichnung von Kundenänderungen enthält, besteht die Aufgabe darin, sie abzurufen Kundeninformationen und stellen Sie gleichzeitig sicher, dass nur der aktuellste Eintrag aus customer_data mit jedem Kunden in der Kundentabelle verknüpft wird.
Um dies zu erreichen, sollten Sie die Verwendung der WHERE-Klausel anstelle der Klausel in Betracht ziehen Hauptabfragetext, da er eine bessere Leistung und Lesbarkeit des Codes bietet. Hier ist eine optimierte Abfrage:
SELECT c.*, CONCAT(title, ' ', forename, ' ', surname) AS name FROM customer c LEFT JOIN customer_data d ON c.customer_id = d.customer_id WHERE d.customer_id = ( SELECT MAX(customer_id) FROM customer_data WHERE customer_id = c.customer_id ) LIMIT 10, 20;
Diese Abfrage stellt sicher, dass für jeden Kunden in customer nur die aktuellste Zeile aus customer_data verknüpft wird, indem sie innerhalb der WHERE-Klausel gefiltert wird. Der LEFT JOIN stellt sicher, dass alle Kunden von customer in die Ergebnisse einbezogen werden, auch wenn sie keinen entsprechenden Eintrag in customer_data haben.
Was Ihre Bedenken hinsichtlich der gemeinsamen Verwendung von CONCAT und LIKE betrifft, haben Sie Recht. CONCAT verkettet Zeichenfolgen und die resultierende Zeichenfolge kann mit dem LIKE-Operator zum Durchführen eines Mustervergleichs verwendet werden. Ihre Anfrage ist in dieser Hinsicht berechtigt.
Das obige ist der detaillierte Inhalt vonWie kann ich die neueste Zeile einer historischen Tabelle in MySQL effizient verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!