在 Oracle 中从 Table1 到 Table2 的 INSERT 期间对特定字段值的子查询?

Subquery for particular field value during INSERT from Table1 to Table2 in Oracle?

我正在尝试创建一个简短的脚本,它将获取 Table1 中的所有字段并将它们插入到 Table2 中。基本字段(col1、col2、col3 等)我已经被这样的东西覆盖了:

INSERT INTO Table2 (col1, col2, col3, col4, col5, col6, col7)
             SELECT col1, col2, col3, col4, col5, SYSDATE, USER
FROM Table1

我在插入 2 个字段的值时遇到问题,特别是 Table2 的 col12/col13。这些列在表 1 中是独立的,但在我的新表 2 中有通过外键 ID 引用到 Table3/Table4 的值。我现在正试图弄清楚如何在 table 从 Table1 插入 Table2 期间执行正确的子查询。

尝试更好地解释:

// Previously Used for DB
[Table1]
col12 -- CUSTOMER
col13 -- MERCHANT

//---------------
// NEW
[Table2]
col15 -- CUSTOMER_ID
col16 -- MERCHANT_ID

[Table3]
ID
CUSTOMER_DESC
CREATED_DATE
CREATED_BY

[Table4]
ID
MERCHANT_DESC
CREATED_DATE
CREATED_BY

任何人都可以提供在我的 INSERT 脚本中正确格式化此类内容的示例吗?我设想它是这样的:

INSERT INTO Table1 (col1, col2, col3, col4)
SELECT col1, col2, col3, [SELECT ID FROM Table3 WHERE Table3.CUSTOMER_DESC == Table2.CUSTOMER])
FROM Table2

如果解释得不够清楚,我深表歉意。

你几乎答对了。

INSERT INTO Table1 (col1, col2, col3, col12)
SELECT col1, col2, col3, (SELECT customer_desc FROM Table3 WHERE Table3.ID = Table2.col15)
FROM Table2

你需要正确的JOINTable3,Table4才能得到引用的字段值:

INSERT INTO Table2 (CUSTOMER_ID, MERCHANT_ID, col1, col2, etc...)
SELECT t3.ID, t4.ID, t1.col1, t2.col2, etc..
FROM Table1 t1 
INNER JOIN Table3 t3 ON t1.CUSTOMER = t3.CUSTOMER_DESC
INNER JOIN Table4 t4 ON t1.MERCHANT = t4.MERCHANT_DESC

上面的查询应该没有问题前提是字段Table1Table3之间存在1-1关系[=16] =]、CUSTOMER_DESCTable1Table4 字段 MERCHANTMERCHANT_DESC.

SQL Fiddle Demo