web-dev-qa-db-ja.com

MySQLクエリでIF ELSEステートメントを記述する方法

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
77
Dylan Cross

おそらく CASE expression を使用したいでしょう。

次のようになります。

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

c/PHPスタイルではなくSQLで記述する必要があります

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

クエリで使用するため

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

ストアドプロシージャまたは関数で使用するため

24
SergeS

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クエリの列リストにあると仮定しています。

15
Eric
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;

両方の結果が同じになります...

13
Khandad Niazi

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/

6
Dilraj Singh