SQL “DANS la” déclaration pour plusieurs colonnes
J'aimerais Nom du filtre,X combinaisons pour qui n'est jamais X=Y
Supposons le tableau suivant:
*Name* *X* *Y*
A 2 1
A 2 2 <--- fulfills requirement for Name=A, X=2
A 10 1
A 10 2
B 3 1
B 3 3 <--- fulfills requirement for Name=B, X=3
B 1 1 <--- fulfills requirement for Name=B, X=1
B 1 3
Donc, j'aimerais revenir à la combinaison Nom=A, X=10, pour lequel X=Y est jamais vrai.
C'était mon approche (qui est syntaxiquement incorrect)
SELECT *
FROM TABLE
WHERE NAME
, X NOT IN (SELECT DISTINCT NAME
, X
FROM TABLE
WHERE X=Y)
Mon problème est le défaut de déclaration qui ne peut pas gérer plusieurs colonnes. Personne ne sait comment faire cela?
utilisation
Qui SGBD que vous utilisez? Postgres? Oracle?
EXISTS
pour ce faire.Qui SGBD que vous utilisez? Postgres? Oracle?
OriginalL'auteur user3726374 | 2014-07-14
Vous devez vous connecter pour publier un commentaire.
Viens de mettre les colonnes en parenthèses
Ci-dessus est conforme à la norme ANSI SQL, mais pas tous les SGBD à l'appui de cette syntaxe.
Un
distinct
n'est pas nécessaire pour une sous-requête pourIN
ouNOT IN
.Cependant
NOT EXISTS
avec un co liées à la sous-requête est très souvent plus rapide qu'unNOT IN
condition.OriginalL'auteur a_horse_with_no_name
Je pense que vous pouvez utiliser les deux pour arriver à ce
OriginalL'auteur Fabio
Il s'agira de vérifier si il y a un tel enregistrement
OriginalL'auteur Daniel E.
Je l'utiliser sur SQL Server
OriginalL'auteur asakura89