在真实场景中,遇到一种状况,就是假设你的订单详情表里的商品详情字段,里面的合同信息须要调整,而项目经理给了一份正确excel文档给你,里面指明了哪一些订单号对应哪一些合同编号,订单详情表是没有合同编号字段的,只有ID,订单号,商品详情,购买数量,单价,商品ID等字段,而具体的商品详情字段值为sql
{"prodSpecId":2323211,"prodId":23232,"prodNo":"010641","prodName":"格力A","brandName":"格力","itemId":"18139","areaCode":"0","specName":"1匹","specValueName":"[{\"parentSpecNo\":163,\"parentSpecName\":\"规格\",\"specNo\":2,\"specName\":\"1匹\",\"specIndex\":0}]","oldPrice":1000.00,"nowPrice":1109.38,"untaxOriginalPrice":884.955752,"untaxPresentPrice":981.752212,"supplierPrice":1109.38,"catalog":"装卸/通信/安防/通用/空调制冷/广播影像/检测维修设备>空调/制冷设备>分体空调","catalogCode":"1144","quantity":1,"picPath":"http://30.33.56.67//pic/product//20192191550565720074.png","contacts":[{"id":null,"supplierId":28,"contactsName":"空调","contactsPhone":"03189898989","contactsMail":"zhanglei@cs.com"}],"stock":9999,"rate":0.1300,"status":1,"serviceProd":-1,"productUUID":"5c9ecec3c58b464c92016e75a4e9f1d2","supplierSubOrderNo":null,"supplierSubOrderStatus":null,"serviceProducts":[{"prodId":7335,"productNo":"007212","catalogId":1144,"supplierId":28,"productName":"不锈钢支架 5P 海尔专用 (全国可供)","quantity":1,"imgPath":"http://pic.colipu.com/pmspic/ItemPicture\\5\\49\\348\\322952\\Original\\322952_1029088.jpg","specName":"[{\"parentSpecNo\":172,\"parentSpecName\":\"model\",\"specNo\":2,\"specName\":\"5P\",\"specIndex\":0}]","nowPrice":56.88,"price":88.90,"untaxOriginalPrice":78.672566,"untaxPresentPrice":50.336283,"randomNumber":"15990b07b3864d94b7e27bb738447618","specOptId":7290,"rate":0.1300},{"prodId":7337,"productNo":"007214","catalogId":1144,"supplierId":28,"productName":"pvc水管 海尔专用 (全国可供)","quantity":1,"imgPath":"http://pic.colipu.com/pmspic/ItemPicture\\5\\49\\348\\322950\\Original\\322950_1029086.jpg","specName":"[{\"parentSpecNo\":172,\"parentSpecName\":\"model\",\"specNo\":2,\"specName\":\"model\",\"specIndex\":0}]","nowPrice":52.50,"price":52.50,"untaxOriginalPrice":46.460177,"untaxPresentPrice":46.460177,"randomNumber":"b76a0e1cf2b244ac861902b0c047c190","specOptId":7292,"rate":0.1300}],"pmsContractVo":{"contractNo":"CSN-MYG-1******3013","pmsContractNo":"402881eb67826581016782979fa88765","contractName":"空调供货、安*****务框架合做协议","contractType":"空调及制冷设备","contarctAmountRmb":10000000.00,"targetId":"402881eb6782658101678297a0f80b89","contractId":null,"classifyNo":"1081001","targetName":null,"untaxPrice":0.000000,"rate":0.130,"untaxAmount":0.000000,"quantity":0,"supplierNo":"913702127837350374","supplierOracleNo":null,"taxPrice":1980.000,"taxAmount":0.000},"prodTotalPrice":1109.38,"sku":null,"prodTotalUntaxPrice":981.76}
这时候你该如何处理?
第一步:把excel表导入到新建的临时表(A)里面。
第二步:订单详情表增长合同编号字段。
第三步:订单详情表跟临时表A关联更新。框架
UPDATE t_ord_detail detail INNER JOIN A temp ON detail.order_no = temp.order_no SET detail.contract_no = temp.contract_no;
第四步:替换订单详情表里的合同编号,条件是contract_no不为空
dom
UPDATE t_ord_detail SET prod_info = REPLACE(prod_info,SUBSTRING( prod_info, LOCATE('"contractNo":', prod_info), LOCATE(',"pmsContractNo":', prod_info) - LOCATE('"contractNo":', prod_info) ),CONCAT('"contractNo":"',contract_no,'"')) where contract_no is not null;