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 回答