1
votes

Erreur de syntaxe de requête SQL lors de l'utilisation de select & <> avec 2 colonnes

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!

sql

2 commentaires

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 Colonne2 où la valeur de Colonne1 n'est pas égale à «A» mais vous dites également que vous voulez les valeurs lorsque Colonne2 est valorisé à «2». Juste besoin d'un peu de clarté, ajoutez peut-être le résultat attendu de votre tentative de requête.


3 Réponses :


0
votes

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')


0 commentaires

0
votes

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');


0 commentaires

0
votes

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


0 commentaires