2010-02-23 127 views
5

它看起来像derby不支持条件语句[IF]。我们怎么写derby中的条件语句

if exists (select 1 from customers where name='somename') 
    update customers ... 
else 
    insert into customers ... 

in derby?德比也没有'替换成'的MySQL。

注意:我使用德比作为mysql的单元测试替代品[即生产将使用mysql,单元测试将使用德比]。

回答

2

http://db.apache.org/derby/docs/10.2/ref/rrefcasenullif.html#rrefcasenullif怎么样?

CASE 
     WHEN 1 = 2 THEN 3 
     WHEN 4 = 5 THEN 6 
     ELSE 7 
    END 

因此,也许你可以尝试这样的:

CASE 
WHEN select 1 from customers where name='somename' = 1 THEN update... 
ELSE insert... 
END 

我不知道是否会工作,但它似乎是一个开始。祝你好运!

编辑:在尝试了几个这些东西后...我不知道这是否真的会帮助你。它似乎不像你可以在SELECT和INSERT之间触发开关;它必须是一个或另一个,CASE进入内部。你想要做什么可能或不可能...

+0

这是行不通的。 记录不完整的Derby DB没有提到CASE子句只能用作另一个SQL子句的一部分,例如选择。 例如, SELECT CASE COUNT(*)为1时THEN ELSE 10 20 END FROM

WHERE Andreas 2017-08-28 16:09:20