我已经查阅了这个页面:http://dev.mysql.com/doc/refman/5.1/en/case.html以及这个页面,但无法让一个简单的程序工作....
更新: 要清除我想要做的事情:我想从表中选择字段id为1,0或者可能是其中任何一行的所有行。这由过程的输入参数指定,该参数取值0,1或2.
所以如果_id = 0我想: 从TABLE中选择*,其中id = 0
如果_id = 1我想要: 从TABLE中选择*,其中id = 1
如果_id = 2,我想要: 从TABLE中选择*,其中id为(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
给出了同样的错误。显然我的语法错误,但我无法弄明白...在哪里可以帮助我吗?
谢谢, 尼古拉斯
答案 0 :(得分:0)
试试这个:
begin
select *,
case _id
when 0 then 0
else 1
end as id
from table
end
当用作SELECT
查询的一部分时,WHEN
不是声明,而是control flow function。
您也可以将其表达为:
begin
select *, _id != 0 as id
from table
end
答案 1 :(得分:0)
构建查询看起来像这样...... mySQL案例与C和Java有不同的语法......
set @input=2;
select * from foo
where
case when @input =2 then value in ( 1, 0) else
value = @input end;