【问题标题】:How to use NOT EXISTS with COMPOSITE KEYS in SQL for inserting data from POJO如何在 SQL 中使用 NOT EXISTS 和 COMPOSITE KEYS 从 POJO 插入数据
【发布时间】:2011-08-22 12:08:36
【问题描述】:

我正在使用 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 对象。

我想插入上面的数据与场景1中的检查一样。 data1 + data2 不应已存在于 myTable 中。

我如何实现这一目标?我认为我们不能在插入语句中使用 SELECT 语句。

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

我怎样才能做到这一点?

【问题讨论】:

  • 你在什么 DBMS 上做这个?

标签: java sql database db2 composite-key


【解决方案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)

【讨论】:

  • 感谢您的回复。我添加了一个新场景,我认为上述答案不起作用!
  • insert into mytable(d1, d2, d) select d1,d2,d where not exists (select 1 from mytable m where javakey1 = m.key1 and javakey2 = m.key2; ---- ——这对吗???
  • 是的,假设您选择的 d1、d2 和 d 是值而不是表中的列(即本质上类似于 javakey1、javakey2)
  • 对不起。但不工作。我创建了一个包含三列和前两列作为主键的表。插入了一些行。现在运行“插入NIK(DATA1,DATA2,DATA)选择'C','3','MY',其中不存在(从NIK A中选择1,其中'C'= A.DATA1和'3'= A.DATA2 ;" 根据您的回答给出语法错误
  • 你的不存在选择是否有右括号?
【解决方案2】:
insert into mySchema.NIK(DATA1, DATA2, DATA) select 'C','3','MY' FROM SYSIBM.DUAL where not exists (select 1 from mySchema.NIK A where 'C' = A.DATA1 and '3' = A.DATA2)

如果数据 'c' '3' 已经存在,那么上面的查询将导致一个空表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-30
    • 2015-04-01
    • 2021-08-29
    • 1970-01-01
    • 2019-01-12
    • 2015-02-17
    • 2013-08-14
    • 2012-05-16
    相关资源
    最近更新 更多