"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-18
Parcourir:997

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 les articles du flux 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3