2010-09-29 20 views
7

Estoy tratando de ejecutar una consulta en la que dos columnas no son lo mismo, pero no es que regresan ningún resultado:Mysql Seleccione Filas Cuando dos columnas no tienen el mismo valor

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

column_a Y column_b son de tipo entero y puede contener nulos. He intentado usar <> IS NOT, etc sin ningún tipo de suerte. Es fácil encontrar si son iguales utilizando < =>, pero <> y! = No devuelve ninguna fila. (usando Mysql 5.0).

¿Pensamientos?

Respuesta

21

El problema es que a! = B es NULL cuando a o b es NULL.

<=> es el operador NULL-safe equals. Para conseguir un NULL de fallos no es igual a usted simplemente puede invertir el resultado:

SELECT * 
FROM my_table 
WHERE NOT column_a <=> column_b 

Sin utilizar el operador seguro nula que tendría que hacer esto:

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

dulce, esto funciona bien, gracias! – Caleb

+0

.... eliminado .... –

Cuestiones relacionadas