Maison > base de données > tutoriel mysql > Comment récupérer un produit par catégorie en utilisant JOIN avec LIMIT 1 ?

Comment récupérer un produit par catégorie en utilisant JOIN avec LIMIT 1 ?

Susan Sarandon
Libérer: 2024-12-01 06:38:13
original
364 Les gens l'ont consulté

How to Retrieve One Product per Category Using JOIN with LIMIT 1?

Joindre des tables avec LIMITE 1 sur la table jointe

La tâche consiste à joindre deux tables mais à récupérer un seul enregistrement de la table jointe par enregistrer dans le premier tableau. Considérez les tableaux suivants :

categories (id, title)
products (id, category_id, title)
Copier après la connexion

Une simple requête joindrait ces tables comme suit :

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

Cependant, cela renvoie plusieurs lignes pour chaque catégorie, ce qui n'est pas souhaitable. Nous devons limiter les résultats à un enregistrement de la table products par catégorie.

Une approche recommandée dans une question similaire consiste à utiliser une sous-requête pour récupérer la clé primaire de l'enregistrement souhaité :

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

Cette requête récupère efficacement les résultats souhaités sans rencontrer de problèmes de requêtes imbriquées. De plus, il surpasse les autres solutions proposées en termes de temps d'exécution, en particulier lorsqu'il s'agit de grands ensembles 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