Comment écrire l’instruction IF ELSE dans une requête MySQL

Comment écrire une instruction IF ELSE dans une requête MySQL?

Quelque chose comme ça:

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

Ensuite, dans mon tableau, je devrais pouvoir faire ceci:

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

Vous voulez probablement utiliser une expression CASE .

Ils ressemblent à ceci:

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

vous devez l’écrire en SQL et non en C / PHP

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

à utiliser dans la requête

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

à utiliser dans des procédures ou des fonctions stockées

Vous cherchez un case :

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

MySQL a une syntaxe if ( if(action=2 and state=0, 1, 0) ), mais la case est plus universelle.

Notez que l’ as state il n’y a que l’aliasing de la colonne. Je suppose que c’est dans la liste des colonnes de votre requête SQL.

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

OU

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

les deux résultats seront les mêmes ….

Selon le manuel de référence mySQL, c’est la syntaxe d’utilisation de l’instruction if et else:

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

Donc en ce qui concerne votre requête:

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

ou vous pouvez utiliser

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

Il y a un bon exemple dans ce lien: http://easysolutionweb.com/sql-pl-sql/how-to-use-if-and-else-in-mysql/