Maison > base de données > tutoriel mysql > Comment récupérer uniquement la première ligne d'un LEFT JOIN pour un flux spécifique ?

Comment récupérer uniquement la première ligne d'un LEFT JOIN pour un flux spécifique ?

Barbara Streisand
Libérer: 2024-11-11 00:06:02
original
240 Les gens l'ont consulté

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

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 :

  • Flux : identifiant, titre, contenu
  • Artistes : id_artiste, nom_artiste
  • feeds_artists : rel_id, artiste_id, feed_id

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'
Copier après la connexion

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'
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal