MySQLクエリでIF ELSEステートメントを作成するにはどうすればよいですか?
このようなもの:
mysql_query("...(irrelevant code).. IF(action==2&&state==0){state=1}");
その後、私の配列でこれを行うことができるはずです:
$row['state']
//this should equal 1, the query should not change anything in the database,
//just the variable for returning the information
おそらく CASE
expression を使用したいでしょう。
次のようになります。
SELECT col1, col2, (case when (action = 2 and state = 0)
THEN
1
ELSE
0
END)
as state from tbl1;
c/PHPスタイルではなくSQLで記述する必要があります
IF( action = 2 AND state = 0, 1, 0 ) AS state
クエリで使用するため
IF ( action = 2 AND state = 0 ) THEN SET state = 1
ストアドプロシージャまたは関数で使用するため
case
を探しています:
case when action = 2 and state = 0 then 1 else 0 end as state
MySQLにはif
構文(if(action=2 and state=0, 1, 0)
)がありますが、case
はより汎用的です。
as state
は列のエイリアスにすぎないことに注意してください。これは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;
両方の結果が同じになります...
mySQLリファレンスマニュアルによると、ifおよびelseステートメントを使用する構文は次のとおりです。
IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF
あなたのクエリに関して:
x = IF((action=2)&&(state=0),1,2);
またはあなたが使用することができます
IF ((action=2)&&(state=0)) then
state = 1;
ELSE
state = 2;
END IF;
このリンクには良い例があります: http://easysolutionweb.com/sql-pl-sql/how-to-use-if-and-else-in-mysql/