La table a
User Value john 284 john 200 john 5 sally 245 sally 180 sally 10 bill 90 bill 1000 bill 284 greg 10 greg 90 greg 2000
Si l'user a une valeur de 284 par exemple, je veux que le résultat ne l'inclue pas. Je ne suis pas sûr de vérifier toutes les lignes de l'user pour voir s'il y a la valeur 284 et ne pas montrer cet user dans le résultat si y a-t-il. Le résultat devrait être distinct.
Le résultat final devrait être
User greg sally
L'utilisation not exists
:
select distinct user from users u where not exists ( select 1 from users u2 where u2.user = u.user and u2.value = 284 )
Qu'est-ce que cela fait, c'est qu'il attrape tous les users de la table des users
où ils n'ont pas une ligne avec la valeur 284
dans la table des users
. Vous pouvez également faire exists
tant qu'inverse (find seulement les users avec une valeur 284
).
En outre, utilisez un distinct
sur la select
pour limiter les users renvoyés à leurs valeurs uniques.
Select distinct User from table where User not in ( Select User from table where value =284)
Une autre option est une auto-jointure:
SELECT DISTINCT u1.[User] FROM users u1 LEFT OUTER JOIN users u2 ON u2.[User] = u1.[User] AND u2.Value = 284 WHERE u2.[User] IS NULL