我有以下表格:
表1:
doc_id | item_id
------ | ------
71 | 4
------ | ------
75 | 8
------ | ------
75 | 3
------ | ------
75 | 2
------ | ------
73 | 7
表2:
id | parent_id | parameter_id
------ | -----------|-------------
1 | 4 | 4
------ | -----------|-------------
2 | 8 | 3
------ | -----------|-------------
3 | 3 | 4
------ | -----------|------------
4 | 2 | 6
------ | -----------|------------
5 | 7 | 4
我想按照以下步骤在表2中插入行:
从Table1中选择item_id,其中document_id = 75;
对于来自1的每个item_id,检查Table2中是否存在记录 table2的parent_id =表1的item_id和parameter_id = 4;
如果记录不存在,则输入数据 插入时应插入表2中的值 (max(id)+1,该特定记录的parent_id(关联Table1" item_id),4作为parameter_id)。
我该怎么做?有人能给我一些暗示吗?我想使用游标并循环遍历它并检查记录是否存在。然后相应地插入数据??
DECLARE CURSOR C1
IS
SELECT * FROM table 1
WHERE DOC_ID = 75;
BEGIN
FOR EACH_RECORD IN C1 LOOP
// check for Table 2 for EACH_RECORD.CONFIG_ITEM_ID;
END LOOP;
END;
/
答案 0 :(得分:1)
insert into table2
(
id,
parent_id,
parameter_id
)(
select
(select (max(id)) from table2) + rownum,
item_id,
4
from
table1
where
table1.doc_id = 75 and
not exists(select 1 from table2 where table1.item_id = table2.parent_id and table2.parameter_id = 4)
)
上面的插入查询是table2
max(id) +1, item_id
table1
和parameter_id
doc_id
所在的table2
插入table1.item_id = table2.parent_id
存在git ls-remote --symref
$ git ls-remote --symref
...
ref: refs/heads/master HEAD
...