0
votes

Sélectionnez des lignes avec le groupe en excluant le groupe avec le drapeau (mySQL)

avoir cette table avec 3 colonnes: xxx pré>

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


0 commentaires

3 Réponses :


1
votes

L'agrégation est une façon de le faire, mais vous avez besoin d'une clause pour affirmer qu'un groupe correspondant n'a pas d'indicateur = 1: xxx

Démo

Vous pouvez également utiliser un sous-requête avec la logique existante: xxx


3 commentaires

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



1
votes

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`;


1 commentaires

Ce retour de requête en double pour le champ Nom



0
votes

Il suffit d'utiliser Sélectionner distinct : xxx


0 commentaires