ここにそれがある:CASE WHEN
を理解
SELECT
t.name,
t.colour,
CASE WHEN (t.Amount < 0) THEN t.Amount END AS small,
CASE WHEN (t.Amount > 0) THEN t.Amount END AS large
FROM t
:
例#1:
と仮定、
IF n < 0 THEN
'N is negative'
else if n == 0 THEN 'N is Zero'
else 'N is positive'
はのはCASE WHEN
表現を使用してMySQLにこのif-else if
チェーンを変換してみましょう:
SET @n := -9;
SELECT
CASE WHEN @n <0 THEN 'N is Negative'
WHEN @n =0 THEN 'N is 0'
ELSE 'N is positive' END AS output;
出力:
output
N is Negative
例#2:
は、今、私たちは、次の3つを変換したい場合はMySQLでのステートメント
IF n <0 THEN 'N is Negative'
IF n == 0 THEN 'N is Zero'
IF n > 0 THEN 'N is Positive'
SET @n := 5;
SELECT
CASE WHEN @n <0 THEN 'N is Negative' END AS negativeOutput,
CASE WHEN @n =0 THEN 'N is 0' END AS zeroOutput,
CASE WHEN @n > 0 THEN 'N is positive' END AS positiveOutput;
出力:
は今、出力は3つの列があります。
negativeOutput zeroOutput positiveOutput
N is positive
何あなたの期待される出力構造の外観を行います好き?いくつの列がありますか? – 1000111
@ 1000111は私の予想される出力を質問に追加しました –
あなたは 'CASE'ステートメントを' END'で終了していないので、構文が無効になります。それだけでなく、 'CASE WHEN THEN END'が' CASE'を使う基本的な例です。 'Amount'が0より小さいか大きい場合、その結果として何もしていないことに注意してください。見直しを推奨:[制御フローステートメント](http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html) –