web-dev-qa-db-fra.com

Sélectionnez où le champ n'est pas égal à Mysql Php

Je me demande simplement quel type de commande mysql je pourrais exécuter en php pour sélectionner tous les éléments d'une certaine table où columna n'est pas égal à x et columnb n'est pas égal à x

Quelque chose comme: select something from table where columna does not equal x and columnb does not equal x

Des idées?

40
Belgin Fish

La clé est la requête SQL, que vous allez configurer en tant que chaîne:

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

Notez qu'il existe de nombreuses façons de spécifier NOT. Un autre qui fonctionne aussi bien est:

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

Voici un exemple complet d'utilisation:

$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
}

Vous pouvez faire ce que vous voulez dans la boucle while tout en haut. Accédez à chaque champ de la table en tant qu'élément du $row array ce qui signifie que $row['field1'] vous donnera la valeur pour field1 sur la ligne en cours, et $row['field2'] vous donnera la valeur pour field2.

Notez que si la ou les colonnes peuvent avoir la valeur NULL, celles-ci ne seront pas trouvées à l’aide de l’une ou l’autre des syntaxes ci-dessus. Vous devrez ajouter des clauses pour inclure NULL valeurs:

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

Vous pouvez utiliser comme

NOT columnA = 'x'

Ou

columnA != 'x'

Ou

columnA <> 'x'

Et comme la requête de Jeffly Bake, pour inclure des valeurs nulles, vous n'avez pas à écrire comme

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

Vous pouvez faire simple en

Not columnA <=> 'x'

<=> est le coffre fort égal à l'opérateur, qui inclut les résultats de même des valeurs nulles.

7
Sayka

Ou peut également insérer la déclaration à l'intérieur du crochet.

SELECT * FROM tablename WHERE NOT (columnA = 'x')
1
hazari zulkefli
$sqlquery = "SELECT field1, field2 FROM table WHERE columnA <> 'x' AND columbB <> 'y'";

Je suggérerais d'utiliser l'opérateur de diamant (<>) en faveur de! =, Car le premier correspond au code SQL valide et le second à un ajout à MySQL.

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

// ce travail de manière insensible à la casse

1
Affan