在插入到另一个表之前验证是否存在

hkmswyz6  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(331)


我必须读取一个包含某人所做的第一次加载的txt数据,并将数据插入到两个表中。这意味着:
在开始的tab\u数据和tab\u列表是空的。
对于第一个txt记录,我必须首先验证“tab\u list”表上是否存在“c43r”,如果不存在,我必须插入并获取新的id,然后插入在“tab\u data”表上创建的新id以及其余信息。
对于第二条记录,首先我必须验证“tab\u list”表中是否存在“c43r”,如果存在,我必须获取id,然后插入在“tab\u data”表中创建的新id以及其余信息。
对于第四个txt记录,我必须首先验证“tab\u list”表上是否存在“m23k”,如果不存在,我必须插入并获取新的id,然后插入在“tab\u data”表上创建的新id以及其余信息。
txt文件中的所有行也是如此。
那我怎么开始呢?
有人有什么建议或解决办法吗?
真的谢谢,问候

o2gm4chl

o2gm4chl1#

您可以通过两个查询来实现这一点。逻辑是先喂 tab_list ,那么 tab_data . 请注意,在中需要一个排序列 txt_data 为了让这个有意义-我想 id .
这个 insert 进入 tab_list ,同时手动生成从 10 .

insert into tab_list(id, tab)
select tab_id, 9 + row_number() over(order by min(id)) 
from txt_data
group by tab_id

有了这个装置,你就可以 inserttab_data :

insert into tab_data (id, tab_id, data)
select
    99 + row_number() over(order by d.id),
    l.id,
    d.data
from txt_data d
inner join tab_list l on l.tab_id = d.tab_id

相关问题