Maison  >  Article  >  base de données  >  Comment récupérer uniquement la première ligne dans un LEFT JOIN ?

Comment récupérer uniquement la première ligne dans un LEFT JOIN ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 18:01:02510parcourir

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

Récupération uniquement de la première ligne d'un LEFT JOIN

En SQL, l'exécution d'une opération LEFT JOIN peut entraîner la création de plusieurs lignes dans la table de droite étant mis en correspondance avec une seule ligne du tableau de gauche. Dans certains scénarios, il est souhaitable de récupérer uniquement la première ligne du tableau de droite pour chaque ligne du tableau de gauche.

Considérez la structure de données simplifiée suivante :

**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

Pour récupérer le et associer uniquement le premier artiste à chaque flux, la syntaxe suivante peut être tentée :

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'

Cependant, cette approche peut ne pas donner les résultats souhaités. Pour atteindre l'objectif, envisagez l'alternative suivante :

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
)

Cette modification utilise la fonction MIN() pour déterminer l'artiste avec l'ID le plus bas, en supposant que les ID d'artiste augmentent avec le temps. De ce fait, LEFT JOIN ne récupérera que le premier artiste associé à chaque flux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn