Mysql update 使用join更新字段
我的个人博客:逐步前行STEP
在mysql应用中常常需要通过别的表的查询结果来更新本表,但很少会本表的查询结果再来更新本表的,下面就看看从本表查询结果更新本表应该怎么做吧。
表classify:
字段 | 属性 |
---|---|
id | int(11) |
name | string(255) |
表production:
字段 | 属性 |
---|---|
id | int(11) |
classify_id | int(11) |
现在表classify中新增pro_cnt字段来统计一个分类下的商品数量:
字段 | 属性 |
---|---|
id | int(11) |
name | string(255) |
pro_cnt | int(11) |
新增字段之后,需要初始更新一下pro_cnt的值为当前分类下的商品数量,首先,通过leftjoin查询出每个分类下的商品数
select count(production.id) pro_cnt from classify
left join production on classify.id = production.classify_id
然后将查询结果与classify再做一个连接,并且使用update...set语法做字段你更新:
update classify inner join
(
select classify.id, count(production.id) pro_cnt from classify
left join production on classify.id = production.classify_id
) as tmp
on using(id)
set classify.pro_cnt = tmp.pro_cnt