¿Cómo se escribe la instrucción IF ELSE en una consulta MySQL?

¿Cómo escribo una instrucción IF ELSE en una consulta MySQL?

Algo como esto:

mysql_query("...(irrelevant code).. IF(action==2&&state==0){state=1}"); 

Luego, en mi matriz, debería poder hacer esto:

  $row['state'] //this should equal 1, the query should not change anything in the database, //just the variable for returning the information 

Probablemente quiera usar una expresión CASE .

Se ven así:

 SELECT col1, col2, (case when (action = 2 and state = 0) THEN 1 ELSE 0 END) as state from tbl1; 

debes escribirlo en SQL no es C / estilo PHP

 IF( action = 2 AND state = 0, 1, 0 ) AS state 

para uso en consulta

 IF ( action = 2 AND state = 0 ) THEN SET state = 1 

para uso en procedimientos almacenados o funciones

Estás buscando case :

 case when action = 2 and state = 0 then 1 else 0 end as state 

MySQL tiene una syntax if ( if(action=2 and state=0, 1, 0) ), pero el case es más universal.

Tenga en cuenta que el as state allà es solo aliasing de la columna. Supongo que esto está en la lista de columnas de su consulta SQL.

 SELECT col1, col2, IF( action = 2 AND state = 0, 1, 0 ) AS state from tbl1; 

O

 SELECT col1, col2, (case when (action = 2 and state = 0) then 1 else 0 end) as state from tbl1; 

ambos resultados serán iguales …

de acuerdo con el manual de referencia mySQL, esta es la syntax del uso de la instrucción if y else:

 IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF 

Entonces con respecto a su consulta:

 x = IF((action=2)&&(state=0),1,2); 

o puedes usar

 IF ((action=2)&&(state=0)) then state = 1; ELSE state = 2; END IF; 

Hay un buen ejemplo en este enlace: http://easysolutionweb.com/sql-pl-sql/how-to-use-if-and-else-in-mysql/