mysql实现更新时数据合并_MySQL跨表更新与数据合并的方法浅谈

昨天接了一个需求,需要追加大量的资源数据到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手册自行实验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
批量更新多条记录可以使用MySQL的`UPDATE`语句结合`CASE`和`WHEN`语句来实现。具体步骤如下: 1. 将需要更新数据保存在一个临中,结构与原相同。 2. 使用`UPDATE`语句对原进行批量更新,将临中的数据更新到原中。 下面是一个示例代码: ```sql -- 创建临 CREATE TEMPORARY TABLE tmp_table ( id INT(11) NOT NULL, name VARCHAR(50) DEFAULT NULL, age INT(11) DEFAULT NULL, PRIMARY KEY (id) ); -- 向临中插入需要更新数据 INSERT INTO tmp_table (id, name, age) VALUES (1, 'Tom', 20), (2, 'Jack', 25), (3, 'Mary', 30), ... ; -- 使用UPDATE语句进行批量更新 UPDATE original_table SET name = CASE WHEN id = 1 THEN 'Tom' WHEN id = 2 THEN 'Jack' WHEN id = 3 THEN 'Mary' ... END, age = CASE WHEN id = 1 THEN 20 WHEN id = 2 THEN 25 WHEN id = 3 THEN 30 ... END WHERE id IN (SELECT id FROM tmp_table); -- 删除临 DROP TABLE tmp_table; ``` 在上面的示例代码中,我们首先创建了一个临`tmp_table`来保存需要更新数据。然后使用`INSERT INTO`语句将需要更新数据插入到临中。 接着使用`UPDATE`语句对原`original_table`进行批量更新。使用`CASE`和`WHEN`语句来实现根据每条记录的`id`值更新对应的`name`和`age`字段。最后使用`WHERE`子句指定更新的记录范围,这里使用了子查询的方式将临中的`id`值作为更新范围。 最后,我们删除临`tmp_table`。这样就完成了批量更新多条记录的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值