近期公司业务从用户所属单组织转成多组织设计,这就牵扯到所有业务表需要根据组织隔离,历史数据要添加组织字段并处理成所属单组织id。
方法有几种,一、使用服务端编码,查询结果集for循环处理,需要做一定量的编程,for循环的执行效率也不是很高,如果有多个业务关联表,即使复制粘贴也要修修改改。二、使用mysql脚本,效率高,多个业务表基本上只需要修改表名就可以运行。
这里mysql脚本相对简单也是今天文章的目的。
目前有两张表file和user,字段自行脑补,file和user之间有个user_id关联,示例sql:
UPDATE file
INNER JOIN ( SELECT id, org_id FROM user ) temp ON file.user_id = temp.id
SET file.org_id = temp.org_id。
UPDATE img
INNER JOIN ( SELECT id, org_id FROM user ) temp ON img.user_id = temp.id
SET img.org_id = temp.org_id。
测试结果:
UPDATE file
INNER JOIN ( SELECT u.id, u.org_id FROM user AS u ) AS temp ON file.user_id = temp.id
set file.org_id = temp.org_id
> Affected rows: 417
> 时间: 0.026s
如果能帮助你解决问题,那就很赞了!