将列从一个表插入另一个表,如果存在于mysql中则更新

时间:2014-12-28 19:17:25

标签: mysql

  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 |
+----------+-----------------------------+

我需要将column1中的Table_B插入Table_A,或者如果Table_ID匹配则更新。

请注意records表之间没有任何关系

请帮忙吗?

2 个答案:

答案 0 :(得分: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;




答案 1 :(得分:0)

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

有关更具体的植入要求,请参阅MySQL Manual,但这是一个简单的摘录。

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