Maison > Questions et réponses > le corps du texte
Considérons le tableau suivant-
ID Score 1 95 2 100 3 88 4 100 5 73
Je suis un novice complet en SQL, mais comment puis-je renvoyer un score contenant les ID 2 et 4 ? Il devrait donc renvoyer 100 puisqu'il apparaît à la fois dans les ID 2 et 4
P粉2370294572023-11-11 20:57:58
SELECT score FROM t WHERE id in (2, 4) HAVING COUNT(*) = 2 /* replace this with the number of IDs */
Cela sélectionnera les lignes avec les ID 2 et 4. Ensuite, la clause HAVING
garantit que l'on trouve les deux lignes ; si l'une d'elles manque, le décompte sera inférieur à 2.
Cela suppose que id
est la seule colonne.
P粉9330033502023-11-11 10:43:35
Ceci est un exemple de requête « ensemble dans un ensemble ». Je recommande d'utiliser la clause having
pour l'agrégation car c'est la méthode la plus flexible.
select score from t group by score having sum(id = 2) > 0 and -- has id = 2 sum(id = 4) > 0 -- has id = 4
Ce que cela fait est agrégé par score. Ensuite, la première partie de la clause having
子句的第一部分 (sum(id = 2)
(sum(id = 2)
) compte le nombre de "2" qu'il y a dans chaque fraction. Le deuxième est le chiffre « 4 ». Seuls les scores « 2 » et « 4 » sont renvoyés.