2014-12-28 58 views
0
Table_A 
+----------+-----------------------------+ 
| Table_ID | Unique      | 
| column1 |        | 
| column2 |        | 
| records | Auto increment| Primary Key | 
+----------+-----------------------------+ 

CREATE TABLE `Table_A` (
     `records` int(11) NOT NULL AUTO_INCREMENT, 
     `column1` varchar(45) DEFAULT NULL, 
     `column2` varchar(45) DEFAULT NULL, 
     `Table_ID` int(11) DEFAULT NULL, 
     PRIMARY KEY (`records`), 
     UNIQUE KEY `table_ID_UNIQUE` (`Table_ID`) 
) 

    Table_B 
+----------+-----------------------------+ 
| Table_ID | Unique      | 
| column1 |        | 
| records | Auto increment| Primary Key | 
+----------+-----------------------------+ 

我需要插入從Table_Bcolumn1Table_A或更新,如果Table_ID匹配。的插入列,只要更新是否存在在MySQL

注意records沒有關係表

任何幫助之間的一切嗎?

+0

你能告訴我們的輸出:顯示創建表的表-A;對於Table_B也是如此。我沒有遵循你的關鍵定義。有幾種方法可以實現這一點,但是如果您提供實際的表格,解釋答案會更容易。 – Born2Code

+0

那裏...我編輯了我的問題。 Table_B具有相同的結構。 – azirion

回答

1

你可以做到這一點使用兩個背靠背的語句,第一個插入的數據,如果它不存在,第二個更新數據(如果您剛剛插入,將重複的工作,但它不會傷害)。如下面這段代碼:

insert into Table_A(Table_ID, column1) select Table_ID, column1 from Table_B where not exists (select * from Table_A where Table_ID=Table_B.Table_ID); 
 

 
update Table_A 
 
inner join Table_B 
 
on Table_A.Table_ID=Table_B.Table_ID 
 
set Table_A.column1=Table_B.column1;

+0

感謝您的回答。用你的代碼得到這個錯誤:錯誤代碼:1221. UPDATE和LIMIT的用法不正確。第一個聲明適用於tho。 – azirion

+0

我更新了答案,您可以刪除限制。我試圖保守,但你沒有一個特定的ID開始,所以這是不正確的。任何如何,更新的答案應該工作。 – Born2Code

0

您可以使用MySQL ON DUPLICATE KEY UPDATE的功能。

更多具體的植入要求請參考MySQL Manual,但這裏有一個簡單的片段。

INSERT INTO table_b (table_id, column1) VALUES (1, '') 
ON DUPLICATE KEY UPDATE; 
+0

在問這個問題之前,我讀了你提供的相同鏈接,但我似乎無法理解。在你的例子中,告訴我你在哪裏讓mysql使用來自table_A的數據?順便說一句,在我的例子中,Im試圖將table_B中的數據插入到table_A中。 – azirion

相關問題