Мне просто интересно, какую команду 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';