0

奇妙なことに、これをウェブで見つけることができませんでした。case ステートメントの when 句内に次のような OR が必要です。

SELECT type,color,brand,CASE type WHEN "foo" OR "BAR" OR "somethingelse" THEN SELECT ... FROM .... WHERE .... > ....;

私はそれを機能させる方法を見つけることができません。括弧で囲んでみました:

SELECT type,color,brand,CASE type WHEN ("foo" OR "BAR" OR "somethingelse") THEN SELECT ... FROM .... WHERE .... > ....;

または角括弧内:

SELECT type,color,brand,CASE type WHEN ["foo" OR "BAR" OR "somethingelse"] THEN SELECT ... FROM .... WHERE .... > ....;

問題は、チェックするオプションのグループが増え、それらのそれぞれに対して単一の WHEN を作成すると、クエリが非常に長くなることです。何かアドバイスはありますか?

4

2 に答える 2

1

括弧なしで別の SELECT を開始することはCASEできません...そして、OR次の方法で可能です:

CASE WHEN type IN ("foo","BAR","somethingelse") THEN ... ELSE END

select呼び出し(サブクエリ)からターゲット値を取得する場合は、THENセクションでこれを行います

... THEN ( SELECT col1 FROM tble WHERE ... ) ELSE END
于 2013-09-11T05:18:28.013 に答える
1

case2つのフォームがあり、1つしか使用できませんOr

  1. case x when val1 then result1 when val2 then result2 else defaultResult end
  2. case when x = val1 then result1 When y = val2 then result2 Else DefaultResult end、またはより一般的には:
    case when [boolExp1] then reslt1 when [boolExp2] then reslt2 else defltReslt end

2 番目の形式ではOr、またはその他のブール演算子を使用できます (Exists私が思い出した場合を除く) 。

 case when x = val1 or y = val2 or z in (val3, val4, val5) then result1 
      else defaultResult end
于 2013-09-11T05:20:45.260 に答える