Maison > base de données > tutoriel mysql > le corps du texte

Comment récupérer uniquement la première ligne dans un LEFT JOIN ?

Susan Sarandon
Libérer: 2024-11-07 18:01:02
original
509 Les gens l'ont consulté

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

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

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

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!