我试图创建一个简短的脚本,它将获取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
。这些列在Table1中是独立的,但在我的新Table2中,通过外键ID
引用到Table3/Table4
的值。我现在试图弄清楚如何在表格INSERT中将表格从表1中导入到表2中。
尝试更好地解释:
// 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
如果解释不是最清楚,我道歉。
答案 0 :(得分:4)
您需要正确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
字段CUSTOMER
之间存在1-1关系,{{字段CUSTOMER_DESC
,Table1
上的1}}和Table4
以及MERCHANT
。
答案 1 :(得分:-1)
你几乎做对了。
INSERT INTO Table1 (col1, col2, col3, col12)
SELECT col1, col2, col3, (SELECT customer_desc FROM Table3 WHERE Table3.ID = Table2.col15)
FROM Table2