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

Comment puis-je limiter les résultats de jointure à un seul enregistrement par ligne de la table jointe ?

Susan Sarandon
Libérer: 2024-11-19 11:09:03
original
419 Les gens l'ont consulté

How Can I Limit Join Results to a Single Record per Row from the Joined Table?

LIMIT JOIN : Récupération d'enregistrements uniques à partir de tables jointes

Lors de la jointure de deux tables, il peut être nécessaire de limiter les résultats à un seul enregistrement par ligne de la table jointe. Ceci peut être réalisé dans MySQL en utilisant la clause LIMIT 1 sur la sous-requête référencée par la clause de jointure.

Considérez le scénario dans lequel nous souhaitons joindre les tables de catégories et de produits pour obtenir des informations sur les catégories et le premier produit associé à chacune. catégorie.

SELECT c.id, c.title, p.id AS product_id, p.title
FROM categories AS c
JOIN products AS p ON c.id = p.category_id
Copier après la connexion

Cette requête renverrait tous les enregistrements de produits pour chaque catégorie, ce qui n'est pas le résultat souhaité. Pour limiter les résultats au premier produit de chaque catégorie, nous pouvons modifier la requête comme suit :

SELECT
 c.id,
 c.title,
 p.id AS product_id,
 p.title AS product_title
FROM categories AS c
JOIN products AS p ON
 p.id = (
  SELECT p1.id FROM products AS p1
  WHERE c.id=p1.category_id
  ORDER BY p1.id LIMIT 1
 )
Copier après la connexion

Dans cette requête modifiée, une sous-requête est utilisée pour récupérer l'identifiant du premier produit de chaque catégorie. Cet identifiant est ensuite utilisé dans la clause de jointure pour limiter les résultats à l'enregistrement unique souhaité.

Cette approche est particulièrement efficace dans les scénarios avec un grand nombre de produits, car elle évite la surcharge de performances liée à l'agrégation de plusieurs enregistrements de produits. pour chaque catégorie. De plus, il est applicable à la fois dans MySQL et PostgreSQL, offrant une solution polyvalente pour la récupération 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