# 将已开启组装物料的SPU下的商品类型改为组合商品 UPDATE `tb_stock5` set `stock_type` = 4 where `spu_id` IN (SELECT `id` FROM `tb_spu5` WHERE `is_assemble` = 1); # 将A表的purchase_code字段值 更新 为B表的code字段值 UPDATE `ysf_stock`.`tb_shelves_over_stock2` AS a JOIN `ysf_purchase`.`tb_purchase2` AS b ON a.`purchase_id` = b.`id` SET a.`purchase_code` = b.`code`; UPDATE ysf_purchase.tb_purchase_plan_stock1 AS a INNER JOIN ysf_stock.tb_stock1 AS b ON a.stock_id = b.id SET a.stock_type = b.stock_type; # 联表更新 UPDATE tb_xxxxx AS a, tb_xxxxx AS b SET a.xxxxx = 0, a.yyyyy =0 WHERE a.xx = b.xx AND a.yy = b.yy AND a.company_id = ? AND b.label_id IN (?) # 增加表索引 ALTER TABLE ysf_amazon.tb_replenishment_task ADD INDEX idx_4(`shop_id`,`replenishment_recommend_quantity`); # 增加表字段 ALTER TABLE tableName ADD COLUMN column; # 批量增加表字段 ALTER TABLE tableName ADD COLUMN column1, ADD COLUMN column2, ADD COLUMN column3; # 修改表字段 ALTER TABLE tableName MODIFY COLUMN column; # 删除某个表的字段 ALTER TABLE tableName DROP columnName; # 删除某个表多个字段 ALTER TABLE tableName DROP COLUMN column1, DROP COLUMN column2, DROP COLUMN column3; # 根据供应商的下单类型,修复采购单的下单类型 UPDATE ysf_purchase.`tb_purchase2` SET `order_type` = 2 WHERE `supplier_id` IN ( SELECT `id` FROM ysf_product.`tb_supplier` WHERE `order_type` = 2 ); # 查询某字段存储多个值,例如:sex字段存储了"11,21,33" WHERE FIND_IN_SET( 11, purchase_plan_id ) OR FIND_IN_SET( 21, purchase_plan_id ) OR FIND_IN_SET( 33, purchase_plan_id ) # 增加某企业推送赛盒的账号 INSERT INTO `sys_base`.`tb_company_erp_api` (`company_id`, `api`, `api_name`, `oauth2client_id`, `creator`, `updater`) VALUES (?, 'allot_in', '调拨入库', ?, '?', '?'); # 查询到货量大于等于采购量的采购单编号 SELECT p5.id, p5.company_id, p5.purchase_quantity, SUM(ps5.arrival_quantity) AS total_arrival_quantity FROM tb_purchase5 p5 JOIN tb_purchase_stock5 ps5 ON p5.id = ps5.purchase_id WHERE p5.company_id = 100011 AND p5.status = 1 GROUP BY ps5.purchase_id HAVING SUM(ps5.arrival_quantity) >= p5.purchase_quantity; # 将采购单已完结,收货单未完结的收货单,作废掉 UPDATE tb_receipt5 SET status = 4 where id IN ( SELECT * from ( select receipt_id from ysf_purchase.tb_receipt_purchase_stock5 AS a LEFT JOIN ysf_purchase.tb_receipt5 AS b ON a.receipt_id = b.id LEFT JOIN ysf_purchase.tb_purchase5 AS c ON a.purchase_id = c.id WHERE a.company_id = 100011 and c.status = 3 and b.status in (1,2) GROUP BY a.receipt_id ) AS a ); # 将质检单的良品,次品量,同步到采购单商品中 UPDATE ysf_purchase.tb_purchase_stock AS A left JOIN ( select * from ( SELECT a.stock_id, b.purchase_id, SUM(a.good_quality) AS good_quality, SUM(a.defective_quality) AS defective_quality FROM ysf_purchase.tb_signfor_receipt_warehouse_stock AS a LEFT JOIN ysf_purchase.tb_signfor_receipt_warehouse AS b ON a.receipt_warehouse_id = b.id GROUP BY a.stock_id, b.purchase_id ) AS C ) AS B on A.stock_id = B.stock_id and A.purchase_id = B.purchase_id SET A.good_quantity = B.good_quality, A.defective_quantity = B.defective_quality where B.good_quality is not null and B.defective_quality is not null; # 获取【收货商品表上架量】 与 【上架单上架量】不一致的数据 select a.shelves_quantity AS a_shelves_quantity, a.stock_id, a.stock_code, a.create_time, a.company_id, b.code AS receipt_code, d.quantity from ysf_purchase.tb_receipt_stock2 AS a left join ysf_purchase.tb_receipt2 as b on a.receipt_id = b.id left join ( select * from ( select stock_id,arrival_code,SUM(quantity) AS quantity from ysf_stock.tb_shelves_over_stock2 GROUP BY stock_id, arrival_code ) AS c ) AS d on d.stock_id = a.stock_id and d.arrival_code = b.code where d.quantity is not null and a.shelves_quantity != d.quantity # 上架单上架量,同步到收货商品表 UPDATE ysf_purchase.tb_receipt_stock6 AS a left join ysf_purchase.tb_receipt6 as b on a.receipt_id = b.id left join ( select * from ( select stock_id,arrival_code,SUM(quantity) AS quantity from ysf_stock.tb_shelves_over_stock6 GROUP BY stock_id, arrival_code ) AS c ) AS d on d.stock_id = a.stock_id and d.arrival_code = b.code SET a.shelves_quantity = d.quantity where d.quantity is not null and a.shelves_quantity != d.quantity # 获取【收货商品表良品量、次品量】 与 【质检单良品量、次品量】不一致的数据 select A.good_quality AS a_good_quality, A.defective_quality AS a_defective_quality, A.stock_id, A.stock_code, A.create_time, B.code AS receipt_code, C.good_quality AS f_good_quality, C.defective_quality AS f_defective_quality from ysf_purchase.tb_receipt_stock2 AS A left join ysf_purchase.tb_receipt2 AS B on A.receipt_id = B.id left join ( select * from ( select c.stock_id, d.arrival_code, c.status, SUM(c.good_quality) AS good_quality, SUM(c.defective_quality) AS defective_quality from ysf_purchase.tb_signfor_receipt_warehouse_stock2 as c left join ysf_purchase.tb_signfor_receipt_warehouse2 as d on c.receipt_warehouse_id = d.id where c.status = 3 and d.type = 1 GROUP BY stock_id, arrival_code ) AS e ) AS C on C.stock_id = A.stock_id and C.arrival_code = B.code where A.good_quality != C.good_quality OR A.defective_quality != C.defective_quality; # 【质检单良品量、次品量】同步到【收货商品表良品量、次品量】 update ysf_purchase.tb_receipt_stock6 AS A left join ysf_purchase.tb_receipt6 AS B on A.receipt_id = B.id left join ( select * from ( select c.stock_id, d.arrival_code, c.status, SUM(c.good_quality) AS good_quality, SUM(c.defective_quality) AS defective_quality from ysf_purchase.tb_signfor_receipt_warehouse_stock6 as c left join ysf_purchase.tb_signfor_receipt_warehouse6 as d on c.receipt_warehouse_id = d.id where c.status = 3 and d.type = 1 GROUP BY stock_id, arrival_code ) AS e ) AS C on C.stock_id = A.stock_id and C.arrival_code = B.code SET A.good_quality = C.good_quality, A.defective_quality = C.defective_quality where (A.good_quality != C.good_quality OR A.defective_quality != C.defective_quality); # 更新采购商品签收量 update ysf_purchase.tb_purchase_stock2 as a, ( select a.stock_id,a.purchase_id,sum(a.actual_received_quantity) as actual_received_quantity from ysf_purchase.tb_receipt_purchase_stock2 as a left join ysf_purchase.tb_receipt2 as b on a.receipt_id=b.id where a.company_id=100002 and b.status not in (4,6,7) and b.type = 1 group by a.purchase_id,a.stock_id ) as b set a.signfor_quantity=b.actual_received_quantity where a.company_id=100002 and a.purchase_id=b.purchase_id and a.stock_id=b.stock_id; # 修复采购主表签收量 UPDATE ysf_purchase.tb_purchase AS a left join ( select * from ( select purchase_id,SUM(signfor_quantity) AS signfor_quantity from ysf_purchase.tb_purchase_stock GROUP BY purchase_id ) AS b ) AS c on c.purchase_id = a.id SET a.signfor_quantity = c.signfor_quantity where a.signfor_quantity != c.signfor_quantity # 修复采购商品表上架量 UPDATE ysf_purchase.tb_purchase_stock AS a left join ( select * from ( select purchase_id,SUM(quantity) AS shelves_quantity,stock_id from ysf_stock.tb_shelves_over_stock GROUP BY purchase_id,stock_id ) AS b ) AS c on a.purchase_id = c.purchase_id and a.stock_id = c.stock_id SET a.shelves_quantity = c.shelves_quantity where a.shelves_quantity != c.shelves_quantity and c.shelves_quantity is not null # 修复收货单商品表的spu_id、spu_code UPDATE ysf_purchase.tb_receipt_stock7 AS a INNER JOIN ysf_stock.tb_stock7 AS b ON a.stock_id = b.id SET a.spu_id = b.spu_id where a.company_id = 100227 and a.receipt_id = 4719; UPDATE ysf_purchase.tb_receipt_stock7 AS a INNER JOIN ysf_stock.tb_spu7 AS b ON a.spu_id = b.id SET a.spu_code = b.spu_code where a.company_id = 100227 and a.receipt_id = 4719; # 查询商品包含部分属性,且只包含选中的属性 SELECT stock_id,attribute_value_id,attribute_type FROM ysf_stock.tb_stock_attribute6 WHERE attribute_value_id IN (809,775,778) GROUP BY stock_id HAVING COUNT(DISTINCT attribute_value_id) = 3; # 通过店仓库存表,创建不存在的店铺数据 INSERT INTO sys_base.tb_shop (id, account_name, company_id) SELECT a.shop_id,CONCAT('店铺',a.shop_id),a.company_id FROM ysf_stock.tb_reserved_inventory2 as a LEFT JOIN sys_base.tb_shop as b ON a.shop_id = b.id WHERE a.company_id = 100003 AND b.account_name IS NULL GROUP BY a.shop_id # 检索重复数据 SELECT company_id, stock_id, warehouse_id, COUNT(*) FROM tb_warehouse_position_stock5_copy129240914 GROUP BY company_id, stock_id, warehouse_id HAVING COUNT(*) > 1; # 嵌套子查询 select id, stock_code, stock_name from tb_stock5 where id in ( select stock_id from ( SELECT company_id, stock_id, warehouse_id, COUNT(*) FROM tb_warehouse_position_stock5_copy129240914 GROUP BY company_id, stock_id, warehouse_id HAVING COUNT(*) > 1) as c); # 查询多仓位总库存与主表总库存不一致的数据 select a.stock_id,a.warehouse_id,a.quantity,c.quantity_sum from tb_warehouse_stock6 as a LEFT JOIN ( select * from ( select stock_id,warehouse_id,SUM(quantity) AS quantity_sum from tb_warehouse_position_stock6 GROUP BY stock_id,warehouse_id ) as b ) as c on a.stock_id = c.stock_id and a.warehouse_id = c.warehouse_id where a.quantity != c.quantity_sum LIMIT 10; # 修复流水记录的仓位信息 UPDATE ysf_log.tb_warehouse_stock_record5 as A LEFT JOIN ysf_stock.tb_warehouse_stock5 AS B ON A.stock_id = B.stock_id and A.warehouse_id = B.warehouse_id SET A.position_code = B.position_code WHERE A.company_id = 100011 and A.position_code = '1'; # 根据仓库 + 商品编号分组,获取仓位(多个仓位合为一个) SELECT stock_id,warehouse_id,GROUP_CONCAT(position_code) FROM tb_warehouse_position_stock6 WHERE warehouse_id IN () and stock_id IN () GROUP BY warehouse_id,stock_id; # 取每个商品最新的一条数据 $stockSettlementPrice = ReceiptStockModel::query($this->tbNum)->where('company_id', $this->companyId)->whereIn('stock_id', $stockIdArr)->select('id','stock_id','settlement_price','create_time')->orderBy('create_time', 'desc')->get()->unique('stock_id')->values(); # 获取收货单类型与采购单不一致的数据 select a.company_id,a.code,a.type,a.source_type,a.status,c.code,c.type AS purchase_type from tb_receipt0 as a LEFT JOIN tb_receipt_purchase_stock0 as b on b.receipt_id = a.id LEFT JOIN tb_purchase0 as c on b.purchase_id = c.id WHERE a.type = 4 and c.type = 1 GROUP BY a.code; # 修复收货单类型与采购单不一致的数据 update tb_receipt1 set type = 1 where id in (select * from (select a.id AS purchase_type from tb_receipt1 as a LEFT JOIN tb_receipt_purchase_stock1 as b on b.receipt_id = a.id LEFT JOIN tb_purchase1 as c on b.purchase_id = c.id WHERE a.type = 4 and c.type = 1 GROUP BY a.code) as B); # 退货单维度,导出数据(返工看板) SELECT C.code AS '采购单号', C.purchase_creator AS '采购员', E.supplier_code AS '供应商代码', A.stock_code AS 'SKU', C.remark AS '描述', C.purchase_quantity AS '采购量', C.shelves_quantity AS '已上架量', A.quantity AS '返工量', (CASE WHEN B.return_type = 1 THEN '退款退货' ELSE '退货补货' END) AS '返工类型', F.name AS '返工原因', B.create_time AS '返工时间', J.claimant_name AS '质检员', (CASE WHEN B.return_method = 1 THEN '物流退货' WHEN B.return_method = 2 THEN '上门取货' ELSE '其他' END ) AS '寄回方式', G.warehouse_name AS '本地仓库', -- B.creator AS '仓储员', K.nickname AS '仓储员', B.return_code AS '返工单号', I.`receive_time` AS '回货签收时间', I.`signfor_quantity` AS '签收数量', I.`shelves_quantity` AS '入库数量', I.`shelves_over_time` AS '入库时间', I.remark AS '备注' FROM ysf_purchase.tb_return_order_sku5 AS A LEFT JOIN ysf_purchase.tb_return_order5 AS B ON A.return_id = B.id LEFT JOIN ( SELECT C1.purchase_id,C1.stock_id,C1.stock_code,C1.remark,C1.purchase_quantity,C1.shelves_quantity, C2.code,C2.creator,C3.nickname AS purchase_creator FROM ysf_purchase.tb_purchase_stock5 AS C1 LEFT JOIN ysf_purchase.tb_purchase5 AS C2 ON C1.purchase_id = C2.id INNER JOIN sys_base.tb_user AS C3 ON C2.creator = C3.id ) AS C ON C.purchase_id = B.purchase_id AND C.stock_id = A.stock_id LEFT JOIN ysf_product.tb_supplier AS E ON B.supplier_id = E.id LEFT JOIN sys_base.tb_label AS F ON B.return_reason = F.id LEFT JOIN sys_base.tb_warehouse AS G ON B.warehouse_id = G.id LEFT JOIN ysf_purchase.tb_purchase5 AS H ON H.`relevancy_code` = B.return_code LEFT JOIN ysf_purchase.tb_purchase_stock5 AS I ON I.purchase_id = H.id AND I.stock_id = A.stock_id LEFT JOIN ( SELECT J1.code, J1.return_order_id, J1.claimant, J2.nickname AS claimant_name FROM tb_signfor_receipt_warehouse5 AS J1 INNER JOIN sys_base.tb_user AS J2 ON J1.claimant = J2.id ) AS J ON J.return_order_id = A.return_id INNER JOIN sys_base.tb_user AS K ON B.creator = K.id WHERE B.return_code = 'RC202410090019'; # 检测收货单签收完,上架完,但收货单还处于待收货 ALTER TABLE tb_receipt2 ADD COLUMN `temp_shelves` int(11) DEFAULT '0' COMMENT '实际上架量(临时)'; SELECT A.temp_shelves,B.shelves_quantity FROM ysf_purchase.tb_receipt2 AS A left JOIN ( select * from ( SELECT receipt_id, SUM(shelves_quantity) AS shelves_quantity FROM ysf_purchase.tb_receipt_stock2 GROUP BY receipt_id ) AS C ) AS B on A.id = B.receipt_id WHERE company_id = 100002; UPDATE ysf_purchase.tb_receipt2 AS A left JOIN ( select * from ( SELECT receipt_id, SUM(shelves_quantity) AS shelves_quantity FROM ysf_purchase.tb_receipt_stock2 GROUP BY receipt_id ) AS C ) AS B on A.id = B.receipt_id SET A.temp_shelves = B.shelves_quantity WHERE company_id = 100002; # 对比Json字段内的数据 SELECT * FROM tb_signfor_receipt_warehouse5 WHERE claimant !=0 and claimant != JSON_EXTRACT(abnormal_report_info, '$.user_id');
2024-11-23
常用SQL
作者:admin | 分类:MySQL | 浏览:77 | 评论:0
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。