MySQL跨表更新与数据合并的方法浅谈

来源:互联网 发布:方立勋java web 编辑:程序博客网 时间:2024/06/04 19:10

昨天接了一个需求,需要追加大量的资源数据到MYSQL的一个表里面,由于数据量比较大,所以想到了把这个表按照资源类型ID分为若干个部分,由多人分别负责其中的一部分。把数据分表非常简单,按照资源类型ID筛选后导出为不同的表名即可。但是,当数据录入完毕,需要将这些录入好的数据合并回源表,看似却没有分表那么容易。

 

需求如下:

源表 sourceTable 中有资源ID,资源类型ID和一些原始内容数据,现增加一个字段A,默认为空,需要往A字段中录入内容。

 

为了提高录入效率,将源表 sourceTable 分成若干表 (如:jobTable1,jobTable2.....) ,分表后的结构与源表 sourceTable结构完全相同。由每个人负责其中一个表的录入工作。

 

下面以分表之一 jobTable1为例,介绍一下将录入后的数据合并回源表 sourceTable 的方法。

 

我们通常使用update语句更新字段,是对一个表进行的,如何进行跨表更新呢?请看下面的SQL语句

 

UPDATE `sourceTable`,`jobTable1` SET `sourceTable`.`A` = `jobTable1`.`A` WHERE `sourceTable`.`ID` = `jobTable1`.`ID`;

 

上面这行SQL语句的作用是将分表jobTable1中的A字段的内容更新回源表sourceTable中,覆盖源表sourceTable中的A字段内容。

由于分表jobTable1中的ID对应源表sourceTable中的ID,所以WHERE子句用来定位记录。

 

UPDATE语句不仅可做单表更新,还可跨表更新,而且可以使用JOIN外连接语法,有关外连接使用方法在此不作介绍,感兴趣的读者可结合MYSQL手册自行实验。

 

原创粉丝点击