加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何在SQL中使用NOT EXISTS和COMPOSITE KEYS从POJO插入数据

发布时间:2020-12-12 06:30:53 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用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 E
我正在使用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:

我使用属性data1,data2和data将数据放入yourTable的java对象中.

我想在Scenario1中插入带有检查的上述数据. data1 data2不应该已经出现在myTable中.

我该如何实现这一目标?我认为我们不能在insert语句中使用SELECT语句.

insert into myTable(key1,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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读