83 votes

Comment écrire une 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
 

147voto

Jack Edmonds Points 10264

Vous voudrez 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;
 

27voto

SergeS Points 4917

vous devez l'écrire en SQL pas le style C / PHP

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

pour une utilisation dans la requête

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

pour une utilisation dans des procédures ou des fonctions stockées

15voto

Eric Points 35647

Vous recherchez 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 case est plus universel.

Notez que le as state est simplement aliaser la colonne. Je suppose que cela se trouve dans la liste des colonnes de votre requête SQL.

15voto

Khandad Niazi Points 193
 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 ....

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X