Maison > Article > base de données > Comment récupérer uniquement la première ligne dans un 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!