J'ai une table avec 2 colonnes ici.
SELECT column2 from mytable and column2 <> (SELECT * FROM mytable where column1 = 'A');
J'essaye d'exécuter une requête SELECT qui: Sélectionne une valeur FROM Column 2 WHILE La colonne 2 n'a pas la même valeur dans une ligne qui a Column 1 = "A"
| column1 | column2 | | A | 1 | | B | 1 | | C | 2 | | D | 1 |
En gros, j'essaye d'exécuter un requête qui renvoie les valeurs de colonne1 uniquement lorsque la valeur de colonne2 est ici "2". Mais le projet que je crée aura des valeurs de colonne 2 aléatoires, donc je ne devrais utiliser que des noms de colonnes
Désolé si c'est trop déroutant!
3 Réponses :
utilisez la sous-requête corrélée
select t1.* from table_name t1 where t1.column2 not in ( select column2 from table_name where column1='A')
La sous-requête de votre requête renvoie plusieurs valeurs. Il faut donc utiliser NOT IN au lieu de :
SELECT column2 FROM mytable WHERE column2 NOT IN (SELECT column2 FROM mytable WHERE column1 = 'A');
Vous pouvez également utiliser une jointure , par exemple:
select t1.column2 from mytable t1 left join (select distinct t2.column2 from mytable t2 where t2.column1='A') t3 on t1.column2=t3.column2 where t3.column2 is null
Sélectionne une valeur de la colonne 2 ... et renvoie les valeurs de la colonne1 ..... que voulez-vous vraiment retourner?
Peu clair ce que vous recherchez. Tout d'abord, vous dites que vous voulez les valeurs de
Colonne2où la valeur deColonne1n'est pas égale à «A» mais vous dites également que vous voulez les valeurs lorsqueColonne2est valorisé à «2». Juste besoin d'un peu de clarté, ajoutez peut-être le résultat attendu de votre tentative de requête.