Mysql SQL或在WHEN内(在CASE中)
奇怪的是我在网上找不到这个, 我需要在case语句中的when子句中使用OR,例如:Mysql SQL或在WHEN内(在CASE中),mysql,sql,database,Mysql,Sql,Database,奇怪的是我在网上找不到这个, 我需要在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 "so
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 .... > ....;
问题是,我有更多的选项组要检查,并且为每个选项设置一个单独的时间,这将使我的查询超长。
没有,有什么建议吗?在
案例中
您不能启动没有括号的单独选择。。。而或
可通过以下方式实现:
CASE WHEN type IN ("foo","BAR","somethingelse") THEN ... ELSE END
如果要从选择调用(子查询)获取目标值,请在then
部分执行此操作
... THEN ( SELECT col1 FROM tble WHERE ... ) ELSE END
案例有两种形式,只有一种可以使用或
案例x当val1然后结果1当val2然后结果2否则默认结果结束
当x=val1时为case,当y=val2时为result1,当y=val2时为result2,否则为DefaultResult end
,
或者,更一般地说:
case when[boolExp1]然后reslt1 when[boolExp2]然后reslt2 else defltReslt end
第二种形式可以使用或
,或任何其他布尔运算符(我记得存在
除外)
可能重复的Hi cars10,这正是我所拥有的,我将编辑我的帖子,这只是我写的解释我的问题的一个快速示例查询。Thx Charles,这解决了我的问题,马上解决:)Thx!
case when x = val1 or y = val2 or z in (val3, val4, val5) then result1
else defaultResult end