Maison > base de données > tutoriel mysql > Comment sélectionner des éléments avec plusieurs valeurs de colonne spécifiques sur les lignes dans MySQL ?

Comment sélectionner des éléments avec plusieurs valeurs de colonne spécifiques sur les lignes dans MySQL ?

DDD
Libérer: 2024-10-28 18:54:02
original
250 Les gens l'ont consulté

How to Select Items with Multiple Specific Column Values Across Rows in MySQL?

ID de sélection MySQL apparaissant sur différentes lignes avec plusieurs valeurs de colonne spécifiques

Problème :

La sélection d'éléments dans une table associative en fonction de plusieurs valeurs spécifiées pour une colonne particulière est une tâche courante mais difficile. Par exemple, étant donné le tableau :

item_id category_id
1 200
1 201
1 202
2 201
2 202
3 202
3 203
4 201
4 207

L'objectif est de sélectionner uniquement les éléments qui appartiennent aux deux ou à toutes les catégories spécifiées ; par exemple, si les ID de catégorie 201 et 202 sont fournis, seuls les éléments 1 et 2 doivent être renvoyés.

Solutions :

1. Auto-jointure :

Cette méthode consiste à joindre la table avec elle-même sur la colonne item_id :

<code class="sql">SELECT c1.item_id
FROM item_category AS c1
INNER JOIN item_category AS c2 ON c1.item_id = c2.item_id
WHERE c1.category_id IN (201, 202)</code>
Copier après la connexion

Cette requête renvoie un ensemble de résultats joint avec une ligne pour chaque paire unique de lignes de la table d'origine qui satisfont aux critèrescategory_id.

2. Group BY et HAVING :

Une approche alternative consiste à utiliser les clauses GROUP BY et HAVING :

<code class="sql">SELECT c.item_id, COUNT(*) AS cat_count
FROM item_category AS c
WHERE c.category_id IN (201, 202)
GROUP BY c.item_id
HAVING cat_count = 2</code>
Copier après la connexion

Cette requête regroupe les lignes par item_id et compte les occurrences des ID de catégorie 201 et 202 pour chaque ligne. La clause HAVING filtre les lignes qui n'ont pas le nombre d'occurrences spécifié (dans ce cas, 2).

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal