0

私はこのページを参照しました: http://dev.mysql.com/doc/refman/5.1/en/case.htmlこのページと同様に、簡単な手順を実行できません....


更新:やりたいことを明確にするために:フィールドIDが1、0、またはそれらのいずれかであるテーブルからすべての行を選択したい。これは、値 0、1、または 2 を取るプロシージャへの入力パラメータによって指定されます。

したがって、_id = 0 の場合: select * from TABLE where id = 0

_id = 1 の場合: select * from TABLE where id = 1

_id = 2 の場合: select * from TABLE where id in (0,1)

以下の単純なケースステートメントだけが機能する場合、残りの部分を自分で機能させることができると思っていました...


私がやりたいことは次のようなものです:

begin
    select * from TABLE where
        case _id
        when  0 then id=0
        else id = 1
        end as id
end

「SQL構文にエラーがあります」というエラーが表示されます。

私も試しました:

begin
    select * from TABLE where
        case _id
        when  0 then id=0
        else id=1
        end case
end

同じエラーが発生します。明らかに、どこかで構文が間違っていますが、どこにあるのかわかりません...誰か助けてくれますか?

ありがとう、ニクラス

4

2 に答える 2

0

これを試して:

begin
    select *,
        case _id
        when 0 then 0
        else 1
        end as id
    from table
end

SELECTクエリの一部として使用される場合WHENは、ステートメントではなく、制御フロー関数です。

これは次のようにも表現できます。

begin
    select *, _id != 0 as id
    from table
end
于 2013-07-15T16:26:09.093 に答える
0

次のようにクエリを作成します... mySQLの場合、CおよびJavaとは異なる構文があります...

set @input=2;

select * from foo 
 where 
     case when @input =2 then  value in ( 1, 0)  else
       value =  @input end;

SQLフィドルを使用したライブデモ

于 2013-07-15T17:56:08.097 に答える