2010-07-12 5 views
1

Je veux obtenir tous les dossiers au cas où le result_1 n'est pas nulle comme ci-dessous:MySQL: Comment obtenir des enregistrements ont des valeurs non nulles?

SELECT ID, 
     Code, 
     NULLIF(CompareWithField,2.25) as result_1 
    FROM `data` 
WHERE Indexed = 0 
    and code = 142 
    and 'result_1' is not null 

Mais au lieu, à chaque fois que je lance la requête, je reçois un résultat même si les rapports result_1 NULL.

Une solution?

Répondre

0

J'ai trouvé la réponse. Le problème était que les noms d'alias n'étaient pas autorisés dans la clause WHERE. Donc, j'ai changé la requête pour cela et cela a fonctionné.

SELECT ID, 
     Code, 
     CompareWithField 
    FROM `data` 
WHERE Indexed = 0 
    and code = 142 
    and NULLIF(CompareWithField,2.26) is not null 
1

Par votre requête, result_1 est un champ d'alias. En tant que tel, il est possible que CompareWithField soit toujours NULL ou 2.25 et par conséquent résultant en NULL.

3

C'est parce que vous avez le résultat_1 entre guillemets. Cela le transforme d'un nom de colonne en une valeur de texte, qui n'est pas nulle. Essayez ...

SELECT ID,Code, NULLIF(CompareWithField,2.25) as result_1 FROM `data` 
    WHERE Indexed=0 and code=142 and result_1 is not null 
+0

si ce n'est pas entre guillemets (mysql cas), vous obtiendrez le nom erreur de champ inconnu – Maverick

+0

Je pense que vous voulez probablement ('contre-apostrophes) pas de guillemets ('). –

Questions connexes