Sql 子查询后插入问题-Oracle
我有一个子查询列表,如下所示Sql 子查询后插入问题-Oracle,sql,oracle,subquery,common-table-expression,Sql,Oracle,Subquery,Common Table Expression,我有一个子查询列表,如下所示 WITH QRY1 AS (.. SOME PL SQL STATEMNT), QRY2 (.. SELECT X,Y,Z,QRY1.* ), QRY3 (.. SOME SELECT * AGAIN USING QRY2) 最后 SELECT * FROM QRY3; 有什么办法我可以做吗 INSERT INTO table_name (a,b,c,d) SELECT * FROM QRY3; 您只需将CTE作为select的一部分放在插入本身之后
WITH QRY1 AS (.. SOME PL SQL STATEMNT),
QRY2 (.. SELECT X,Y,Z,QRY1.* ),
QRY3 (.. SOME SELECT * AGAIN USING QRY2)
最后
SELECT * FROM QRY3;
有什么办法我可以做吗
INSERT INTO table_name (a,b,c,d)
SELECT * FROM QRY3;
您只需将CTE作为select的一部分放在插入本身之后,而不是之前:
INSERT INTO table_name (a,b,c,d)
WITH QRY1 AS (.. SOME PL SQL STATEMNT),
QRY2 (.. SELECT X,Y,Z,QRY1.* ),
QRY3 (.. SOME SELECT * AGAIN USING QRY2)
-- and finally
SELECT * FROM QRY3;
快速演示:
create table table_name (a number, b number, c number, d number);
insert into table_name (a,b,c,d)
with qry1 as (select 4 as d from dual),
qry2 as (select 2 as b, 3 as c, qry1.* from qry1),
qry3 as (select 1 as a, qry2.* from qry2)
select * from qry3;
1 row inserted.
select * from table_name;
A B C D
---------- ---------- ---------- ----------
1 2 3 4