我成功插入1行,但我想使用循环插入行。目的是要插入table2中不存在的table1值。我的查询是这样的:
FOR cl1 IN (SELECT tb1.cl1 FROM table1 tb1 WHERE tb1.cl1 NOT IN(SELECT tb2.cl1 FROM table2 tb2))
LOOP
INSERT INTO table2 VALUES (cl1,'123456',sysdate);
END LOOP
答案 0 :(得分:1)
不需要循环:
INSERT INTO table2
SELECT tb1.cl1, '123456', sysdate
FROM table1 tb1
WHERE tb1.cl1 NOT IN(SELECT tb2.cl1 FROM table2 tb2)
如果列NOT IN
包含cl1
值,则使用NULL
的子查询将无法正常工作。
明确列出insert
语句中的所有列也被视为良好的编码风格:insert into table2 (col1, col2, col3) ...