update toussedefinition set price = (select sum(p) from (select sum(isnull(mi.count, 0) * isnull(md.disinfectionPrice, 0)) p from MaterialInstance mi join materialdefinition md on mi.materialDefinition_id = md.id where mi.tousse_id = toussedefinition.id union select sum(isnull(di.amount, 0) * isnull(dg.referencePrice, 0)) p from DiposableGoodsInstance di join DisposableGoods dg on di.diposableGoods_id = dg.id where di.tousseDefinition_id = toussedefinition.id ) vw ) where toussetype = '消毒物品' and forDisplay='1';