Как мне написать оператор IF ELSE в запросе MySQL?
Примерно так:
mysql_query("...(irrelevant code).. IF(action==2&&state==0){state=1}");
Тогда в моем массиве я смогу сделать это:
$row['state'] //this should equal 1, the query should not change anything in the database, //just the variable for returning the information
Вы, вероятно, хотите использовать выражение CASE .
CASE
Они выглядят так:
SELECT col1, col2, (case when (action = 2 and state = 0) THEN 1 ELSE 0 END) as state from tbl1;
вы должны написать это на SQL, а не в стиле C / PHP
IF( action = 2 AND state = 0, 1, 0 ) AS state
для использования в запросе
IF ( action = 2 AND state = 0 ) THEN SET state = 1
для использования в хранимых процедурах или функциях
Вы ищете case:
case
case when action = 2 and state = 0 then 1 else 0 end as state
MySQL имеет синтаксис if (if(action=2 and state=0, 1, 0)), но case является более универсальным.
if
if(action=2 and state=0, 1, 0)
Обратите внимание, чтоas state это просто псевдоним столбца.Я предполагаю, что это в списке столбцов вашего запроса SQL.
as state
SELECT col1, col2, IF( action = 2 AND state = 0, 1, 0 ) AS state from tbl1;
ИЛИ
SELECT col1, col2, (case when (action = 2 and state = 0) then 1 else 0 end) as state from tbl1;
оба результата будут одинаковыми ....
согласно справочному руководству по MySQL это синтаксис использования операторов if и else:
IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF
Что касается вашего запроса:
x = IF((action=2)&&(state=0),1,2);
или вы можете использовать
IF ((action=2)&&(state=0)) then state = 1; ELSE state = 2; END IF;
В этой ссылке есть хороший пример: http://easysolutionweb.com/sql-pl-sql/how-to-use-if-and-else-in-mysql/