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 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;
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
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
il alias simplement la colonne. Je suppose que cela se trouve 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;
OR
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 de MySQL, cette syntaxe consiste à utiliser l'instruction if et else:
IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF
Donc, concernant 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/