两张表关联数据的修改

近期遇到一个问题,比如我想将数据库中某个供货商的所有商品重新定价,之前的不对,但数据库中的数据太多了,一个个人工去改太麻烦了,怎么办呢?
首先先整理一些条件,比如
1、只修改某个供货商的所有商品
2、如果之前定价时,利润在30%以内的,修改为10%
3、之前的定价,如果利润大于30%的,修改为20%
这一看需要两张表关联才行,并且有 判断条件 ,如果编写一个存储过程,倒也简单了,能否一个SQL搞定呢,最后看一下这个SQL如何?

UPDATE goods_sku sku INNER JOIN goods_spu spu ON spu.id=sku.spu_id
SET sales_price =
CASE
WHEN sku.market_price * 1.0 / sku.cost_price > 1.3 THEN
sku.cost_price * 1.2
WHEN sku.market_price * 1.0 / sku.cost_price <= 1.3 THEN
sku.cost_price * 1.1
ELSE sales_price
END

WHERE spu.spu_type != 0 AND spu.supplier_id='8a2ff8006daf319c8e8b09b0d100ed93'

其中将update 后面的表使用两张表关联充当
再使用case when 语句进行条件的判断
最后使用supplier_id过滤只有这个供应商的产品才如此定价,完美解决!!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。