Heim  >  Artikel  >  Datenbank  >  Wie rufe ich nur die erste Zeile in einem LEFT JOIN ab?

Wie rufe ich nur die erste Zeile in einem LEFT JOIN ab?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 18:01:02541Durchsuche

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

Nur ​​die erste Zeile in einem LEFT JOIN abrufen

In SQL kann die Ausführung einer LEFT JOIN-Operation zu mehreren Zeilen aus der rechten Tabelle führen wird einer einzelnen Zeile aus der linken Tabelle zugeordnet. In einigen Szenarien ist es wünschenswert, für jede Zeile in der linken Tabelle nur die erste Zeile aus der rechten Tabelle abzurufen.

Beachten Sie die folgende vereinfachte Datenstruktur:

**Feeds**
id | title | content
----------------------
1  | Feed 1 | ...

**Artists**
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2

**feeds_artists**
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1

Zum Abrufen der Um Artikel zu füttern und jedem Feed nur den ersten Künstler zuzuordnen, kann die folgende Syntax versucht werden:

SELECT *
FROM feeds
LEFT JOIN feeds_artists ON wp_feeds.id = (
    SELECT feeds_artists.feed_id FROM feeds_artists
    WHERE feeds_artists.feed_id = feeds.id
    LIMIT 1
)
WHERE feeds.id = '13815'

Dieser Ansatz führt jedoch möglicherweise nicht zu den gewünschten Ergebnissen. Um das Ziel zu erreichen, ziehen Sie die folgende Alternative in Betracht:

SELECT *
FROM feeds f
LEFT JOIN artists a ON a.artist_id = (
    SELECT
      MIN(fa.artist_id) a_id
    FROM feeds_artists fa 
    WHERE fa.feed_id = f.id
)

Diese Modifikation verwendet die Funktion MIN(), um den Künstler mit der niedrigsten ID zu ermitteln, wobei davon ausgegangen wird, dass sich die Künstler-IDs im Laufe der Zeit erhöhen. Infolgedessen ruft der LEFT JOIN nur den ersten Künstler ab, der jedem Feed zugeordnet ist.

Das obige ist der detaillierte Inhalt vonWie rufe ich nur die erste Zeile in einem LEFT JOIN 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