Problem polega na tym, że a !=b jest NULL, gdy a lub b ma wartość NULL.
<=>
jest operatorem równym NULL bezpiecznym. Aby uzyskać NULL-safe nie równy, możesz po prostu odwrócić wynik:
SELECT *
FROM my_table
WHERE NOT column_a <=> column_b
Bez użycia operatora null safe musiał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)