mysql - validar - la consulta "no es igual" no funciona




validar texto php (4)

Tengo una consulta muy simple como esta:

SELECT * FROM `all_conversations` WHERE `deleted_1` != '1';

Y mi deleted_1 ser predeterminado es null o algún ID de usuario, pero por alguna razón, esta consulta siempre me devuelve 0 filas, también probé <> pero aún así, ¿qué podría estar mal?

EDTI Entonces, después de ejecutar más consultas, descubro que mi problema era el valor predeterminado del campo deleted_1 , era NULL así que modifiqué mi consulta y ahora funciona bien:

SELECT *
FROM `all_conversations`
WHERE `deleted_1` != 'NULL'
AND `deleted_1` != 23

¿Puedes intentar esto: deleted_1 is not null and deleted_1 != '1' ?

mysql> select 0 is not null and 0 != '1', 1 is not null and 1 != '1', null is not null and null != '1';
+----------------------------+----------------------------+----------------------------------+
| 0 is not null and 0 != '1' | 1 is not null and 1 != '1' | null is not null and null != '1' |
+----------------------------+----------------------------+----------------------------------+
|                          1 |                          0 |                                0 |
+----------------------------+----------------------------+----------------------------------+

O este deleted_1 is null or deleted_1 != '1' :

mysql> select 0 is null or 0 != '1', 1 is null or 1 != '1', null is null or null != '1';
+-----------------------+-----------------------+-----------------------------+
| 0 is null or 0 != '1' | 1 is null or 1 != '1' | null is null or null != '1' |
+-----------------------+-----------------------+-----------------------------+
|                     1 |                     0 |                           1 |
+-----------------------+-----------------------+-----------------------------+

Realmente depende de lo que quieras recuperar.


¿Qué hay de eliminar las comillas simples alrededor del 1?

SELECT * FROM `all_conversations` WHERE `deleted_1` != 1;

Recomiendo usar un operador seguro y negación NULL

SELECT * FROM `all_conversations` WHERE NOT(`deleted_1` <=> '1');

SELECT * FROM all_conversations WHERE deleted_1 <> 1 OR deleted_1 IS NULL

Los valores NULL necesitan un tratamiento especial: http://dev.mysql.com/doc/refman/5.1/en/working-with-null.html

Yo sugeriría usar el operador de diamante ( <> ) a favor de != Ya que el primero es SQL válido y el segundo es una adición a MySQL.







sql