LEFT JOIN uniquement la première ligne
Dans le monde des requêtes de base de données, l'opération LEFT JOIN est un outil puissant pour combiner des données de plusieurs tableaux. Cependant, vous pouvez parfois rencontrer le défi de récupérer sélectivement uniquement la première ligne d'un LEFT JOIN, ce qui entraîne une confusion et des résultats apparemment infructueux.
L'un de ces scénarios consiste à récupérer uniquement le premier artiste associé à un flux. Considérez la structure de base de données simplifiée suivante :
Pour récupérer les flux désignés et leurs premiers artistes correspondants, une approche intuitive pourrait impliquer quelque chose comme ce qui suit :
SELECT * FROM feeds LEFT JOIN feeds_artists ON 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 requête peut ne pas donner le résultat souhaité . Essayez plutôt la requête optimisée suivante :
SELECT * FROM feeds f LEFT JOIN artists a ON a.artist_id = ( SELECT artist_id FROM feeds_artists fa WHERE fa.feed_id = f.id LIMIT 1 ) WHERE f.id = '13815'
Dans cette requête, l'astuce consiste à utiliser une requête en ligne dans l'instruction LEFT JOIN. Cette requête en ligne sélectionne l'identifiant d'artiste du premier artiste associé à chaque flux, en partant de l'hypothèse que les identifiants d'artiste augmentent au fil du temps. Par conséquent, la requête résultante récupère la ligne souhaitée, démontrant ainsi la puissance des requêtes de base de données.
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!