Heim >Datenbank >MySQL-Tutorial >Wie rufe ich nur die erste Zeile in einem LEFT JOIN für einen bestimmten Feed ab?

Wie rufe ich nur die erste Zeile in einem LEFT JOIN für einen bestimmten Feed ab?

Barbara Streisand
Barbara StreisandOriginal
2024-11-11 00:06:02241Durchsuche

How to Retrieve Only the First Row in a LEFT JOIN for a Specific Feed?

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:

  • Feeds: ID, Titel, Inhalt
  • Künstler: Künstler-ID, Künstlername
  • feeds_artists: rel_id, artist_id, feed_id

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!

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