2012-07-20 41 views
0

我有一個表,比如與父表table1連接的table2。我也有table3,我想將它的內容複製到table1連接到table1。表3可能在外鍵列中有一些值在表1 &中不可用,當我嘗試複製這些值時會導致錯誤。我怎樣才能解決這個問題,以便只複製在父表中有引用的記錄?無法將記錄複製到引用密鑰表

+1

你能告訴我們你到目前爲止所嘗試過的嗎? – 2012-07-20 13:54:07

回答

0
insert into table2 (col1, col2, ...) 
select col1, col2, ... from table3 
where table3.refcol in (select keycol from table1) 

當然,您需要用實際的列名稱替換樣本。 :-)

+0

這比在kaps發佈的答案中使用的聯接效率低得多。 – 2012-07-20 14:24:30

+0

陳述如此,不知道實際的數據類型,使用的表大小和索引是很奇怪的......我建議對mysql的查詢優化器有一點信任;) – 2012-07-20 16:17:50

+0

Hi Kuba。我的評論適用於任何數據類型,表格大小或索引。使用IN()模擬連接是一種反模式。 – 2012-07-20 17:53:37

1
Insert into Table2 (<columnList>) 
Select <columnlist> 
From Table3 Inner join Table1 
On Table3.fieldFromTable3 = Table1.ReferredFieldFromTable1 

根據需要使用列並在Join中提供適當的字段名稱。