Como escrever se outra declaração em uma consulta MySQL
como é que escrevo uma declaração IF ELSE numa consulta MySQL?
Algo do género:mysql_query("...(irrelevant code).. IF(action==2&&state==0){state=1}");
então, lá em baixo na minha matriz eu devo ser capaz de fazer isto:
$row['state']
//this should equal 1, the query should not change anything in the database,
//just the variable for returning the information
5 answers
Provavelmente queres usar um CASE
expressão .
Eles são assim:
SELECT col1, col2, (case when (action = 2 and state = 0)
THEN
1
ELSE
0
END)
as state from tbl1;
Você deve escrevê-lo em SQL não no estilo C / PHP
IF( action = 2 AND state = 0, 1, 0 ) AS state
Para utilização na consulta
IF ( action = 2 AND state = 0 ) THEN SET state = 1
Para utilização em procedimentos ou funções armazenados
case
:
case when action = 2 and state = 0 then 1 else 0 end as state
O MySQL tem uma sintaxe if
(if(action=2 and state=0, 1, 0)
), mas case
é mais universal.
Note que o as state
está aliando a coluna. Presumo que isto esteja na lista de colunas da sua consulta 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;
Ambos os resultados serão iguais....
De acordo com o manual de referência mySQL esta é a sintaxe de usar a instrução if e else:
IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF
Então, em relação à tua pergunta:
x = IF((action=2)&&(state=0),1,2);
Ou pode utilizar
IF ((action=2)&&(state=0)) then
state = 1;
ELSE
state = 2;
END IF;
Há um bom exemplo neste link : http://easysolutionweb.com/sql-pl-sql/how-to-use-if-and-else-in-mysql/