在 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
你需要正确的JOIN
到Table3
,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
上面的查询应该没有问题前提是字段Table1
和Table3
之间存在1-1关系[=16] =]、CUSTOMER_DESC
和 Table1
和 Table4
字段 MERCHANT
、MERCHANT_DESC
.
我正在尝试创建一个简短的脚本,它将获取 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
你需要正确的JOIN
到Table3
,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
上面的查询应该没有问题前提是字段Table1
和Table3
之间存在1-1关系[=16] =]、CUSTOMER_DESC
和 Table1
和 Table4
字段 MERCHANT
、MERCHANT_DESC
.