Maison >base de données >tutoriel mysql >Comment sélectionner les voitures qui ont réussi tous les tests dans une liste ?
Filtrer les voitures qui ont réussi tous les tests
Identifier efficacement les voitures qui ont réussi tous les tests requis à partir d'une liste donnée nécessite une méthode plus sophistiquée que les simples IN
contrôles des opérateurs, en particulier lorsqu'il s'agit de tests multiples. Une approche plus précise exploite la puissance des clauses GROUP BY
et HAVING
.
Considérez cette requête SQL pour sélectionner les voitures qui ont réussi tous les tests dans un ensemble prédéfini :
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4</code>
Cette requête regroupe les résultats par carname
et utilise la clause HAVING
avec COUNT(DISTINCT testtype)
. Cela garantit que seules les voitures ayant réussi quatre types de tests distincts (en supposant que quatre tests figurent dans la liste) sont incluses dans le résultat.
Pour un résultat plus complet, l'intégrer en tant que sous-requête avec la table cars
permet de récupérer des détails supplémentaires sur la voiture :
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4 )</code>
Cette requête améliorée propose une sélection précise et complète des voitures ayant réussi tous les tests de la liste définie.
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!