2010-09-29 16 views
7

Sto cercando di eseguire una query in cui due colonne non sono la stessa cosa, ma non è che tornano alcun risultato:Mysql Selezionare le righe in cui due colonne non hanno lo stesso valore

SELECT * FROM `my_table` WHERE `column_a` != `column_b`; 

column_a E column_b sono di tipo intero e può contenere valori nulli. Ho provato a utilizzare <> NON È, ecc. Senza fortuna. È facile trovare se sono uguali usando < =>, ma <> e! = Non restituisce alcuna riga. (usando Mysql 5.0).

Pensieri?

risposta

21

Il problema è che a! = B è NULL quando a o b è NULL.

<=> è l'operatore NULL-safe equals. Per ottenere un NULL-safe non è uguale a te può semplicemente invertire il risultato:

SELECT * 
FROM my_table 
WHERE NOT column_a <=> column_b 

Senza usare il nulla operatore di sicurezza che avrebbe dovuto fare questo:

SELECT * 
FROM my_table 
WHERE column_a != column_b 
OR (column_a IS NULL AND column_b IS NOT NULL) 
OR (column_b IS NULL AND column_a IS NOT NULL) 
+0

dolce, questo funziona bene, grazie! – Caleb

+0

.... rimosso .... –

Problemi correlati