我正在使用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)
我怎样才能做到这一点?
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)