我有一个包含不同日历(ws.url("http://url.com")
.get()
.thenApply(response -> response.asJson())
.thenApply(json -> do something with the JSON)
. and so on
)的表的数据库。现在我创建了一个新表(table events
)并从旧备份中导入了表事件中的所有条目。
现在,我想在事件表中插入来自events_backup
的特定日历(query calendar_id = 'foo'
)的所有条目,但前提是不存在。
我该怎么做?
答案 0 :(得分:1)
insert into DESTINATION_TABLE
select WANTED_COLUMNS
where not exists
(select true
from SOURCE_TABLE
where query calendar_id = 'foo');
答案 1 :(得分:0)
也许我错过了什么,但听起来好像你只是在寻找:
insert into event (pk_column, e1.calendar_id, ...)
select e1.pk_column, e1.calendar_id, ...
from event e1
where e1.calendar_id = 'foo'
and not exists (select 1
from event e2
where e2.pk_column = e1.pk_column);
以上假设pk_column
表中有一个名为event
的列是主键或唯一键。
从Postgres 9.5开始的另一个替代方法是使用on conflict
子句忽略因唯一约束违规而失败的所有插入:
insert into event (pk_column, e1.calendar_id, ...)
select e1.pk_column, e1.calendar_id, ...
from event e1
on conflict do nothing;