Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

Barbara Streisand
Freigeben: 2024-11-11 00:06:02
Original
185 Leute haben es durchsucht

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'
Nach dem Login kopieren

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'
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage