Intereting Posts

Выберите, где поле не равно Mysql Php

Мне просто интересно, какую команду mysql я могу выполнить в php, которая будет выбирать все элементы из определенной таблицы, где columna не равна x, а columnb не равен x

Что-то вроде: select something from table where columna does not equal x and columnb does not equal x

Есть идеи?

Ключ – это sql-запрос, который вы настроите как строку:

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

Обратите внимание, что существует множество способов указать NOT. Другой, который работает так же хорошо:

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

Вот полный пример того, как его использовать:

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

Вы можете делать все, что захотите, в цикле выше. Получите доступ к каждому полю таблицы как к элементу $row array что означает, что $row['field1'] даст вам значение для field1 в текущей строке, а $row['field2'] даст вам значение для field2 .

Обратите внимание, что если столбец (столбцы) могут иметь значения NULL , они не будут найдены с использованием любого из указанных выше синтаксисов. Вам нужно будет добавить предложения, чтобы включить значения NULL :

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

Вы можете использовать как

 NOT columnA = 'x' 

Или

 columnA != 'x' 

Или

 columnA <> 'x' 

И, как и запрос Джеффли Бейка, для включения нулевых значений вам не нужно писать как

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

Вы можете сделать это простым

 Not columnA <=> 'x' 

<=> – это Null Safe, равный Operator, который включает в себя результаты даже от нулевых значений.

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

// эта работа в случае нечувствительности

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

Я бы предложил использовать алмазный оператор (<>) в пользу! =, Поскольку первый из них является правильным SQL, а второй – добавлением MySQL.

Или также можно вставить инструкцию внутри скобки.

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

Вы также можете использовать

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