小编典典

如何在SQL中将NOT EXISTS与COMPOSITE KEYS结合使用以从POJO插入数据

sql

我正在使用DB2 DBMS。

方案1:

myTable有一个组合键(key1,key2),其中key1和key2都是yourTable中的外键。

我想将新数据从yourTable插入myTable,但前提是myTable中不存在key1,key2组合。

insert into myTable(key1, key2, someData)
values(x, y, z)
where NOT EXISTS (want to check if composite key is not already present)

方案2:

我将数据从yourTable中放入具有属性data1,data2和data的java对象中。

我想将上述数据与Scenario1中的检查一起插入。data1 + data2应该不存在于myTable中。

我该如何实现?我认为我们不能在insert语句内使用SELECT语句。

insert into myTable(key1, key2, data)
values(data1, data2, data)
where (data1 + data2 are already not present in myTable)

我怎样才能做到这一点?


阅读 209

收藏
2021-04-22

共1个答案

小编典典

insert into mytable(...)
select ...
from yourtable y
left join mytable m
on y.key1 = m.key1 and y.key2 = m.key2
where m.key is null

或者

insert into mytable(...)
select ...
from yourtable y
where not exists (select 1 from mytable m where y.key1 = m.key1 and y.key2 = m.key2)

对于您的第二种情况,它看起来与上面的查询类似

insert into mytable(...)
select ...
where not exists (select 1 from mytable m where javakey1 = m.key1 and javakey2 = m.key2)
2021-04-22