avoir cette table avec 3 colonnes: Je souhaite sélectionner tous les groupes qui n'ont pas d'indicateur = 1 p> Résultats attendus: P> SELECT name
FROM test
WHERE flag <> '1'
GROUP BY name
3 Réponses :
L'agrégation est une façon de le faire, mais vous avez besoin d'une clause Vous pouvez également utiliser un sous-requête avec la logique existante: p> code> pour affirmer qu'un groupe correspondant n'a pas d'indicateur = 1:
Démo H2> P>
Pourquoi ne pas avoir de somme (drapeau) = 0?
Pourquoi pas en effet, cela fonctionnerait également, mais c'est par coïncidence, et la plupart du temps, cela ne fonctionnerait pas (par conséquent, je ne pensais pas à l'écrire de cette façon).
Ok merci, était juste pour mieux comprendre comment ça marche
Vous pouvez utiliser ci-dessous la requête pour obtenir la sortie souhaitée.
SELECT `name` FROM `test` WHERE `name` <> ALL ( SELECT `name` FROM `test` WHERE `flag` = 1 ) GROUP BY `name`;
Ce retour de requête en double pour le champ Nom
Il suffit d'utiliser Sélectionner distinct code>: