2010-09-29 9 views
7

próbuję uruchomić kwerendę, gdzie dwie kolumny nie są takie same, ale nie jest to powracający żadnych wyników:Mysql Wybór wierszy, gdzie dwie kolumny nie mają tej samej wartości

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

column_a I column_b są typ całkowity i może zawierać wartości null. Próbowałem używać <> NIE JEST, itp. Bez żadnego szczęścia. Łatwo jest znaleźć, czy są one takie same, używając < =>, ale <> i! = Nie zwracają żadnych wierszy. (używając Mysql 5.0).

Myśli?

Odpowiedz

21

Problem polega na tym, że a! = B ma wartość NULL, gdy a lub b ma wartość NULL.

<=> to operator NULL-safe equals. Aby uzyskać NULL-Safe nie równa można po prostu odwrócić wynik:

SELECT * 
FROM my_table 
WHERE NOT column_a <=> column_b 

Bez użycia bezpiecznego operatora null, trzeba by to zrobić:

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

słodki, to działa dobrze, dzięki! – Caleb

+0

.... usunięto .... –

Powiązane problemy