7

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

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

在德比?Derby 也没有 mysql 的“替换为”。

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

4

2 回答 2

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 进入其中。你想做的事情可能会也可能不会......

于 2011-06-23T18:45:59.167 回答
1

我知道这可能为时已晚,但万一有人还在寻找它:

合并

https://issues.apache.org/jira/browse/DERBY-3155

例如:

MERGE INTO customers USING SYSIBM.SYSDUMMY1 ON customers.name='somename' WHEN MATCHED THEN UPDATE SET name = 'someothername', ... WHEN NOT MATCHED THEN INSERT(id, name, ...) VALUES (DEFAULT, 'someothername', ...)

于 2019-02-10T00:40:55.957 回答