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