从多个表中选择,插入另一个表Oracle SQL查询

时间:2018-02-16 11:10:12

标签: sql oracle sql-insert

我在这里经历了this链接。我有类似的问题,但我想要来自两个不同表格的数据。这样的事情。但它没有返回预期的结果。

INSERT INTO tbl_1 (fld_id1,fld_id2)
    SELECT tbl_2.col1
    FROM tbl_2 WHERE someCondi,
    SELECT tbl_3.col1
    FROM tbl_3 WHERE someCondi

例如

表1:

Col1  Col2  
----------
1      56  
1      57  
1      59  

表2:

Col1  
----
1  

表3

col1  
-----
56  
57  
59

2 个答案:

答案 0 :(得分:1)

如果(fld_id1,fld_id2)是tbl_2.col1和tbl_3.col1,那么你必须使用JOIN

INSERT INTO tbl_1 (fld_id1,fld_id2)
SELECT t2.col1, t3.col1
FROM tbl_2 t2 
INNER JOIN tbl_3 t3 ON "JOIN CONDITION" 
WHERE "t2.someCondi"
AND "t3.someCondi"

因此,如果你不能使用JOIN,你可以尝试使用笛卡尔积:

INSERT INTO tbl_1 (fld_id1,fld_id2)
SELECT t2.col1, t3.col1
FROM tbl_2 t2, tbl_3 t3
WHERE "t2.someCondi"
AND "t3.someCondi"

答案 1 :(得分:1)

看起来您正在寻找交叉加入:

INSERT INTO tbl_1 (fld_id1,fld_id2)
SELECT t2.col1, t3.col1
FROM table3 t3
  cross join table2 t2
WHERE <some condition>

至少在您向我们展示的示例中,这将返回您的预期结果。