Comment sélectionner SQL pour la colonne 1 pas dans la colonne 2

voix
1

J'ai une table avec quatre colonnes. La première colonne ID1 comporte une ligne semblable à ID2. J'aime sélectionner une requête pour obtenir toutes les lignes de ID2, à l'exception du dossier identique. Par exemple:

ID1 Name1 ID2 Name2
-------------------
01  A     01  A
01  A     02  B
01  A     03  C
03  C     03  C
03  C     01  A
03  C     04  G

Sélectionnez ID2, Nom2 A partir du tableau où ID2 <> ID1

La production devrait être:

ID2, Name2
----------
02   B
03   C
01   A
04   G

03 / C et 01 A besoin d'être ici. Si j'utilise distincte, il exludes tous les dossiers identiques de ID1, que je ne veux pas. J'utilise ASP classique pour sélectionner des groupes ID1 dans la liste des options SELECt. si je sélectionne 01, puis SELECT liste d'options pour ID2 apparaissent. Je veux seulement voir tous ID2 qui n'est pas ID1.

entrez

Quelqu'un peut-il me aider s'il vous plaît? Merci.

Créé 27/11/2018 à 15:20
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
4

Je pense qu'il n'y a pas besoin d'explication:

select id2, name2
from t
where (id1 <> id2) OR (name1 <> name2)
Créé 27/11/2018 à 15:24
source utilisateur

voix
1

cela fonctionnera:

select ID2,Name2 from tablename where ID1!=ID2 and Name1!=Name2
Créé 27/11/2018 à 16:02
source utilisateur

voix
1

Votre question n'est pas tout à fait clair, en supposant que ID1ne peut égaler ID2et name1peut égaler name2la bonne réponse serait la suivante:

SELECT DISTINCT ID2, Name2 FROM tableName WHERE ID2 <> ID1

Vous sélectionnez des colonnes ID2et Name2mais seulement celles où ID1n'est pas égal ID2. Il y a aussi DISTINCT, il garantit que seules les valeurs différentes sont retournées.

si name1ne peut égaler name2vous devez utiliser:

SELECT DISTINCT ID2, Name2 FROM tableName WHERE ID2 <> ID1 AND name1 <> name2
Créé 27/11/2018 à 15:28
source utilisateur

voix
1

Essayez « distincte »

Select distinct ID2, Name2 From table where ID2 <> ID1
Créé 27/11/2018 à 15:24
source utilisateur

voix
1

Je pense que vous voulez not exists. Mais votre jeu de résultats ne semble pas correspondre à la description de la question.

select id2, name2
from t
where not exists (select 1
                  from t t2
                  where t2.id1 = t.id2 and t2.name1 = t.name2
                 );
Créé 27/11/2018 à 15:22
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more