Heim >Datenbank >MySQL-Tutorial >Wie rufe ich nur die erste Zeile in einem LEFT JOIN für einen bestimmten Feed ab?
LEFT JOIN Nur die erste Zeile
In der Welt der Datenbankabfragen ist die LEFT JOIN-Operation ein leistungsstarkes Werkzeug zum Kombinieren von Daten aus mehreren Tische. Allerdings kann es manchmal vorkommen, dass Sie auf die Herausforderung stoßen, selektiv nur die erste Zeile aus einem LEFT JOIN abzurufen, was zu Verwirrung und scheinbar erfolglosen Ergebnissen führt.
Ein solches Szenario besteht darin, nur den ersten Künstler abzurufen, der mit einem Feed verknüpft ist. Betrachten Sie die folgende vereinfachte Datenbankstruktur:
Um die angegebenen Feeds und ihre entsprechenden ersten Künstler abzurufen, könnte ein intuitiver Ansatz etwa Folgendes umfassen:
SELECT * FROM feeds LEFT JOIN feeds_artists ON feeds.id = ( SELECT feeds_artists.feed_id FROM feeds_artists WHERE feeds_artists.feed_id = feeds.id LIMIT 1 ) WHERE feeds.id = '13815'
Diese Abfrage führt jedoch möglicherweise nicht zum gewünschten Ergebnis . Versuchen Sie stattdessen die folgende optimierte Abfrage:
SELECT * FROM feeds f LEFT JOIN artists a ON a.artist_id = ( SELECT artist_id FROM feeds_artists fa WHERE fa.feed_id = f.id LIMIT 1 ) WHERE f.id = '13815'
Bei dieser Abfrage besteht der Trick darin, eine Inline-Abfrage innerhalb der LEFT JOIN-Anweisung zu verwenden. Diese Inline-Abfrage wählt die artist_id des frühesten mit jedem Feed verknüpften Künstlers aus und nutzt dabei die Annahme, dass sich die Künstler-IDs im Laufe der Zeit erhöhen. Folglich ruft die resultierende Abfrage die gewünschte Zeile ab und demonstriert so die Leistungsfähigkeit der Datenbankabfrage.
Das obige ist der detaillierte Inhalt vonWie rufe ich nur die erste Zeile in einem LEFT JOIN für einen bestimmten Feed ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!