2010-07-20 19 views
37

Me pregunto qué tipo de comando mysql podría ejecutar en php que seleccionaría todos los elementos de una determinada tabla donde columna no es igual a x y columnb no es igual a xSeleccione desde donde el campo no es igual a Mysql Php

Algo así como: select something from table where columna does not equal x and columnb does not equal x

¿Alguna idea?

Respuesta

60

La clave es la consulta SQL, que va a configurar como una cadena:

$sqlquery = "SELECT field1, field2 FROM table WHERE NOT columnA = 'x' AND NOT columbB = 'y'"; 

Tenga en cuenta que hay una gran cantidad de formas de especificar NO. Otro que funciona igual de bien es:

$sqlquery = "SELECT field1, field2 FROM table WHERE columnA != 'x' AND columbB != 'y'"; 

Aquí está un ejemplo completo de cómo usarlo:

$link = mysql_connect($dbHost,$dbUser,$dbPass) or die("Unable to connect to database"); 
mysql_select_db("$dbName") or die("Unable to select database $dbName"); 
$sqlquery = "SELECT field1, field2 FROM table WHERE NOT columnA = 'x' AND NOT columbB = 'y'"; 
$result=mysql_query($sqlquery); 

while ($row = mysql_fetch_assoc($result) { 
//do stuff 
} 

Usted puede hacer lo que le gustaría en el anterior bucle while. Acceda a cada campo de la tabla como un elemento del $row array, lo que significa que $row['field1'] le dará el valor de field1 en la fila actual, y $row['field2'] le dará el valor field2.

Tenga en cuenta que si la (s) columna (s) pueden tener valores de NULL, no se encontrarán utilizando ninguna de las sintaxis anteriores. Usted tendrá que añadir cláusulas a incluir NULL valores:

$sqlquery = "SELECT field1, field2 FROM table WHERE (NOT columnA = 'x' OR columnA IS NULL) AND (NOT columbB = 'y' OR columnB IS NULL)"; 
+4

Me alegro de poder ayudar. Comencé con el bloque de código como ejemplo ... luego edité como 10 veces mientras guardaba el almacenamiento solo para pensar "espera, podría agregar una cosa más para hacerlo más claro" –

+0

ninguno de estos parece funcionar si el valor predeterminado de la columna es 'NULL' – SpYk3HH

+0

@ SpYk3HH Buen punto. Voy a abordar eso. –

-1

Se puede utilizar también

select * from tablename where column1 ='a' and column2!='b'; 

1
select * from table where fiels1 NOT LIKE 'x' AND field2 NOT LIKE 'y' 

// este trabajo en el caso de manera insensible

0
$sqlquery = "SELECT field1, field2 FROM table WHERE columnA <> 'x' AND columbB <> 'y'"; 

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

6

Se puede utilizar como

NOT columnA = 'x' 

O

columnA != 'x' 

O

columnA <> 'x' 

Y al igual que la pregunta de Jeffly Hornear, para la inclusión de los valores nulos, que no tienen que escribir como

(NOT columnA = 'x' OR columnA IS NULL) 

Usted puede hacer que sea sencillo por

Not columnA <=> 'x' 

< => es el nulo seguro igual al operador, que incluye los resultados de los valores incluso nulos.

0

O también puede insertar la declaración dentro del corchete.

SELECT * FROM tablename WHERE NOT (columnA = 'x')