T-Sql学习

[MySQL] insert into select join查

2019-08-21  本文已影响0人  快给我饭吃

今天工作中,mysql需要初始化一批数据,这批数据的值是需要从其他多个表中获取。本来想使用存储过程来实现这个功能,需要新建存储过程,然后写完再调用该存储过程,发现还是太麻烦了,故转而使用这个连表查数据批量更新的方法,记录在此供需要的人参考下。基本上sql的形式是insert into select join和update join set两种。

T1表和T2表通过id关联,记为T1.id <=> T2.id。T1表中的A1列来自T2表的A2列,记为T1.A1 => T2.A2,同时T1.B2 => T2.B2,则插入T1表中数据可以写为,其中的常量可以为你需要的常量。注意select前不能加values关键字,否者报错。

INSERT INTO `T1`(`company_id`, `shop_id`, `A1`, `B1`,
`stock_id`, `created_at`, `updated_at`) 
select 11, 48, T2.A2, T2.B2, -1, now(), now() from `T1` 
inner join `T2` on T1.id=T2.id and T2.shop_id=11 and T2.company_id=11;

update的形式如下,可以使用如下sql.

update `T1` 
inner join T2 on T2.id=T1.id 
set T1.A1=T2.A1 
where T2.shop_id=11 and T2.company_id=11;
上一篇 下一篇

猜你喜欢

热点阅读