系列文章
C#底层库–MySQLBuilder脚本构建类(select、insert、update、in、带条件的SQL自动生成)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129179216
C#底层库–MySQL数据库操作辅助类(推荐阅读)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126886379
C#底层库–SQLite的使用(小型、本地数据库)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/123666958
【提高编程效率】Excel数据批量导入数据库
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126427323
【Oracle】数据库服务器限制ip访问
本文链接:https://blog.csdn.net/youcheng_ge/article/details/122220930
【Oracle】Excel导入数据教程
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118722756
【Oracle】数据库还原教程_数据泵
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118054855
【SQL】如何查询表字段并识别主键
本文链接:https://blog.csdn.net/youcheng_ge/article/details/110820405
【SQL】outer apply的用法
本文链接:https://blog.csdn.net/youcheng_ge/article/details/79903489
【SQL】多表连接重复数据处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/79903619
MySQL安装教程(详细)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126037520
MySQL卸载教程(详细)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129279265
【MySQL】group by分类汇总,如何增加“总计”字段?
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128217837
【MySQL】WITH CHECK OPTION的用法
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128147196
【MySQL】使用存储过程插入千万级数据如何提升效率?
本文链接:https://blog.csdn.net/youcheng_ge/article/details/77728189
【MySQL】数据库表行列转置的实现
本文链接:https://blog.csdn.net/youcheng_ge/article/details/77625052
【MySQL】查询中,NULL值转换为空字符串
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130381878
文章目录
- 系列文章
- 前言
- 一、技术介绍
- 1.1 方法一
- 1.2 方法二
- 二、数据准备
- 2.1 数据库表结构
- 三、解决方案
- 3.1 方法一
- 3.2 方法二
- 四、用法总结
前言
本专栏为【数据库】,主要介绍SQL的功能与特点、SQL数据定义语言(表、视图、索引、约束)、SQL数据操作语言(数据检索、数据插入、数据删除、数据更新)、创建与删除触发器、SQL数据控制语言(安全性和授权、事务处理)以及嵌入式SQL。
如果你对本专辑感兴趣,持续关注吧。大家有任何问题,也可以评论区反馈,私信我。
一、技术介绍
1.1 方法一
采用
GROUP BY
分类汇总,找到自增ID最小的记录(先进先删),利用IN
删除纪录
1.2 方法二
采用备份表的方式
,复制空的备份表,将重复纪录取出来,去重完后,插入备份表,删除原表中的所有重复纪录,然后将备份表记录(不重复的纪录)再重新插入 原表。
二、数据准备
2.1 数据库表结构
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for 模具信息表
-- ----------------------------
DROP TABLE IF EXISTS `模具信息表`;
CREATE TABLE `模具信息表` (
`AutoID` bigint(20) NOT NULL AUTO_INCREMENT,
`公司编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`工厂名称` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '一期',
`存货编码` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`采购订单编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`领用申请单编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`销售订单编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具供应商编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具类别` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '新模',
`模具类型` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具材质` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具出厂编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具出厂规格` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具出厂直径` decimal(10, 4) NULL DEFAULT 0.0000,
`返修次数` int(255) NULL DEFAULT 0,
`模具编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模链编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具标准规格` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具规格` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具标准直径` decimal(10, 4) NULL DEFAULT 0.0000,
`模具直径` decimal(10, 4) NULL DEFAULT 0.0000,
`模芯规格` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`粒度` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`状态描述` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`库存状态` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`仓库编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`货位编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`设备编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`下盘编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`下盘规格` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`累计公里数` decimal(10, 3) NULL DEFAULT 0.000,
`累计盘数` int(255) NULL DEFAULT 0,
`行动` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具打标时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具打标录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具打标操作人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具打标备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具检验时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具检验录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具检验人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`异常类型` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`特殊检验说明` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具检验备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`最小直径` decimal(10, 4) NULL DEFAULT 0.0000,
`最大直径` decimal(10, 4) NULL DEFAULT 0.0000,
`平均直径` decimal(10, 4) NULL DEFAULT 0.0000,
`椭圆度` decimal(10, 4) NULL DEFAULT 0.0000,
`椭圆率` decimal(10, 3) NULL DEFAULT 0.000,
`左定径长度` decimal(10, 3) NULL DEFAULT 0.000,
`右定径长度` decimal(10, 3) NULL DEFAULT 0.000,
`定径长度` decimal(10, 3) NULL DEFAULT 0.000,
`有效值` decimal(10, 3) NULL DEFAULT 0.000,
`定径区AR` decimal(10, 3) NULL DEFAULT 0.000,
`左压缩角` decimal(10, 3) NULL DEFAULT 0.000,
`右压缩角` decimal(10, 3) NULL DEFAULT 0.000,
`压缩角` decimal(10, 3) NULL DEFAULT 0.000,
`压缩区AR1` decimal(10, 3) NULL DEFAULT 0.000,
`压缩区AR2` decimal(10, 3) NULL DEFAULT 0.000,
`孔偏角X` decimal(10, 3) NULL DEFAULT 0.000,
`孔偏角Y` decimal(10, 3) NULL DEFAULT 0.000,
`倍率` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0',
`检验结果` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具首次入库时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`领用类型` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '生产领用',
`模具领用时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具领用录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具领用人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具领用备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具退库时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具退库录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具退库操作人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具退库原因` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具退库备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具采购退货时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具采购退货录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具采购退货操作人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具采购退货原因` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具采购退货备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具报废时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具报废录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具报废操作人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具报废原因` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具报废备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
PRIMARY KEY (`AutoID`) USING BTREE,
INDEX `AK_Key_CompanyID`(`公司编号` ASC) USING BTREE,
INDEX `AK_Key_FactoryName`(`工厂名称` ASC) USING BTREE,
INDEX `AK_Key_MaterialID`(`存货编码` ASC) USING BTREE,
INDEX `AK_Key_U8POID`(`采购订单编号` ASC) USING BTREE,
INDEX `AK_Key_U8TakeID`(`领用申请单编号` ASC) USING BTREE,
INDEX `AK_Key_U8SOID`(`销售订单编号` ASC) USING BTREE,
INDEX `AK_Key_SupplierID`(`模具供应商编号` ASC) USING BTREE,
INDEX `AK_Key_ModeClass`(`模具类型` ASC) USING BTREE,
INDEX `AK_Key_ModeMaterial`(`模具材质` ASC) USING BTREE,
INDEX `AK_Key_ModeIniID`(`模具出厂编号` ASC) USING BTREE,
INDEX `AK_Key_ModeIniType`(`模具出厂规格` ASC) USING BTREE,
INDEX `AK_Key_ModeID`(`模具编号` ASC) USING BTREE,
INDEX `AK_Key_ModeLineID`(`模链编号` ASC) USING BTREE,
INDEX `AK_Key_ModeType`(`模具规格` ASC) USING BTREE,
INDEX `AK_Key_ModeHeartType`(`模芯规格` ASC) USING BTREE,
INDEX `AK_Key_State`(`状态描述` ASC) USING BTREE,
INDEX `AK_Key_InOutState`(`库存状态` ASC) USING BTREE,
INDEX `AK_Key_StoreID`(`仓库编号` ASC) USING BTREE,
INDEX `AK_Key_PositionID`(`货位编号` ASC) USING BTREE,
INDEX `AK_Key_MCID`(`设备编号` ASC) USING BTREE,
INDEX `AK_Key_DownID`(`下盘编号` ASC) USING BTREE,
INDEX `AK_Key_DownType`(`下盘规格` ASC) USING BTREE,
INDEX `AK_Key_Action`(`行动` ASC) USING BTREE,
INDEX `AK_Key_ModePrintTime`(`模具打标时间` ASC) USING BTREE,
INDEX `AK_Key_ModeCheckTime`(`模具检验时间` ASC) USING BTREE,
INDEX `AK_Key_NGType`(`异常类型` ASC) USING BTREE,
INDEX `AK_Key_CheckResult`(`检验结果` ASC) USING BTREE,
INDEX `AK_Key_FirstInTime`(`模具首次入库时间` ASC) USING BTREE,
INDEX `AK_Key_TakeOutType`(`领用类型` ASC) USING BTREE,
INDEX `AK_Key_TakeOutTime`(`模具领用时间` ASC) USING BTREE,
INDEX `AK_Key_ReturnTime`(`模具退库时间` ASC) USING BTREE,
INDEX `AK_Key_BuySendBack`(`模具采购退货时间` ASC) USING BTREE,
INDEX `AK_Key_WasteTime`(`模具报废时间` ASC) USING BTREE,
INDEX `AK_Key_IsOld`(`模具类别` ASC) USING BTREE,
INDEX `AK_Key_ModeStdType`(`模具标准规格` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 343075 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '0-1-基础信息' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for 模具返修流程表
-- ----------------------------
DROP TABLE IF EXISTS `模具返修流程表`;
CREATE TABLE `模具返修流程表` (
`AutoID` bigint(20) NOT NULL AUTO_INCREMENT,
`公司编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`工厂名称` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '一期',
`存货编码` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`采购订单编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`领用申请单编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`销售订单编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具供应商编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具类别` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '新模',
`模具类型` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具材质` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具出厂编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具出厂规格` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具出厂直径` decimal(10, 4) NULL DEFAULT 0.0000,
`返修次数` int(11) NULL DEFAULT 0,
`模具编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模链编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具标准规格` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具规格` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具标准直径` decimal(10, 4) NULL DEFAULT 0.0000,
`模具直径` decimal(10, 4) NULL DEFAULT 0.0000,
`模芯规格` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`粒度` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`状态描述` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`库存状态` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`仓库编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`货位编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`设备编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`下盘编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`下盘规格` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`累计公里数` decimal(10, 3) NULL DEFAULT 0.000,
`累计盘数` int(11) NULL DEFAULT 0,
`行动` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具打标时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具打标录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具打标操作人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具打标备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具检验时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具检验录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具检验人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`异常类型` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`特殊检验说明` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具检验备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`最小直径` decimal(10, 4) NULL DEFAULT 0.0000,
`最大直径` decimal(10, 4) NULL DEFAULT 0.0000,
`平均直径` decimal(10, 4) NULL DEFAULT 0.0000,
`椭圆度` decimal(10, 4) NULL DEFAULT 0.0000,
`椭圆率` decimal(10, 3) NULL DEFAULT 0.000,
`左定径长度` decimal(10, 3) NULL DEFAULT 0.000,
`右定径长度` decimal(10, 3) NULL DEFAULT 0.000,
`定径长度` decimal(10, 3) NULL DEFAULT 0.000,
`有效值` decimal(10, 3) NULL DEFAULT 0.000,
`定径区AR` decimal(10, 3) NULL DEFAULT 0.000,
`左压缩角` decimal(10, 3) NULL DEFAULT 0.000,
`右压缩角` decimal(10, 3) NULL DEFAULT 0.000,
`压缩角` decimal(10, 3) NULL DEFAULT 0.000,
`压缩区AR1` decimal(10, 3) NULL DEFAULT 0.000,
`压缩区AR2` decimal(10, 3) NULL DEFAULT 0.000,
`孔偏角X` decimal(10, 3) NULL DEFAULT 0.000,
`孔偏角Y` decimal(10, 3) NULL DEFAULT 0.000,
`倍率` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0',
`检验结果` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具首次入库时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`领用类型` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '生产领用',
`模具领用时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具领用录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具领用人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具领用备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具退库时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具退库录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具退库操作人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具退库原因` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具退库备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具采购退货时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具采购退货录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具采购退货操作人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具采购退货原因` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具采购退货备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具报废时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具报废录入时间` datetime NULL DEFAULT '1000-01-01 00:00:00',
`模具报废操作人编号` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具报废原因` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
`模具报废备注` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '空',
PRIMARY KEY (`AutoID`) USING BTREE,
INDEX `AK_Key_CompanyID`(`公司编号` ASC) USING BTREE,
INDEX `AK_Key_FactoryName`(`工厂名称` ASC) USING BTREE,
INDEX `AK_Key_MaterialID`(`存货编码` ASC) USING BTREE,
INDEX `AK_Key_U8POID`(`采购订单编号` ASC) USING BTREE,
INDEX `AK_Key_U8TakeID`(`领用申请单编号` ASC) USING BTREE,
INDEX `AK_Key_U8SOID`(`销售订单编号` ASC) USING BTREE,
INDEX `AK_Key_SupplierID`(`模具供应商编号` ASC) USING BTREE,
INDEX `AK_Key_ModeClass`(`模具类型` ASC) USING BTREE,
INDEX `AK_Key_ModeMaterial`(`模具材质` ASC) USING BTREE,
INDEX `AK_Key_ModeIniID`(`模具出厂编号` ASC) USING BTREE,
INDEX `AK_Key_ModeIniType`(`模具出厂规格` ASC) USING BTREE,
INDEX `AK_Key_ModeID`(`模具编号` ASC) USING BTREE,
INDEX `AK_Key_ModeLineID`(`模链编号` ASC) USING BTREE,
INDEX `AK_Key_ModeType`(`模具规格` ASC) USING BTREE,
INDEX `AK_Key_ModeHeartType`(`模芯规格` ASC) USING BTREE,
INDEX `AK_Key_State`(`状态描述` ASC) USING BTREE,
INDEX `AK_Key_InOutState`(`库存状态` ASC) USING BTREE,
INDEX `AK_Key_StoreID`(`仓库编号` ASC) USING BTREE,
INDEX `AK_Key_PositionID`(`货位编号` ASC) USING BTREE,
INDEX `AK_Key_MCID`(`设备编号` ASC) USING BTREE,
INDEX `AK_Key_DownID`(`下盘编号` ASC) USING BTREE,
INDEX `AK_Key_DownType`(`下盘规格` ASC) USING BTREE,
INDEX `AK_Key_Action`(`行动` ASC) USING BTREE,
INDEX `AK_Key_ModePrintTime`(`模具打标时间` ASC) USING BTREE,
INDEX `AK_Key_ModeCheckTime`(`模具检验时间` ASC) USING BTREE,
INDEX `AK_Key_NGType`(`异常类型` ASC) USING BTREE,
INDEX `AK_Key_CheckResult`(`检验结果` ASC) USING BTREE,
INDEX `AK_Key_FirstInTime`(`模具首次入库时间` ASC) USING BTREE,
INDEX `AK_Key_TakeOutType`(`领用类型` ASC) USING BTREE,
INDEX `AK_Key_TakeOutTime`(`模具领用时间` ASC) USING BTREE,
INDEX `AK_Key_ReturnTime`(`模具退库时间` ASC) USING BTREE,
INDEX `AK_Key_BuySendBack`(`模具采购退货时间` ASC) USING BTREE,
INDEX `AK_Key_WasteTime`(`模具报废时间` ASC) USING BTREE,
INDEX `AK_Key_IsOld`(`模具类别` ASC) USING BTREE,
INDEX `AK_Key_ModeStdType`(`模具标准规格` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 131071 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '3-3-模具车间' ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
三、解决方案
3.1 方法一
SELECT *
FROM 模具信息表
WHERE 模具编号='空' AND 状态描述<>'已经模具检验合格, 等待模具打标'
UPDATE 模具信息表
SET 状态描述='已经模具检验合格, 等待模具打标'
WHERE 模具编号='空' AND 状态描述<>'已经模具检验合格, 等待模具打标'
-- 查询重复数据
SELECT 模具供应商编号,模具出厂编号,COUNT(模具出厂编号)
FROM 模具信息表
GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(模具供应商编号)>1;
-- 删除重复数据中,最先插入的,先进先删
-- IN查询效率最低,建议使用单号删除
DELETE FROM 模具信息表
WHERE AutoID IN
(
SELECT MIN(AutoID)
FROM 模具信息表_copy1
GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(模具供应商编号)>1
)
3.2 方法二
-- 1、变更状态描述
-- 发生情况:
-- ①新模具已经导入检测数据,没有打印标签,此时模具编号为空;
-- ②然后又重新检测,重新导入检验数据,模具编号依旧为空
-- ③模具编号为空,需要重新打标,状态描述改为 等待模具打标
-- 查询模具编号为空,但是状态已经入库的记录
SELECT *
FROM 模具信息表
WHERE 模具编号='空' AND 状态描述<>'已经模具检验合格, 等待模具打标'
-- 更新模具编号为空,状态初始化为 等在打标状态
UPDATE 模具信息表
SET 状态描述='已经模具检验合格, 等待模具打标'
WHERE 模具编号='空' AND 状态描述<>'已经模具检验合格, 等待模具打标'
-- 2、去除模具信息表重复数据
-- 查询重复数据
SELECT 模具供应商编号,模具出厂编号,COUNT(模具出厂编号)
FROM 模具信息表
GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(模具供应商编号)>1;
-- 删除重复数据中,最先插入的,先进先删
-- IN执行效率最低,太慢太慢了,不建议使用本语句,请继续看下文3
DELETE FROM 模具信息表
WHERE AutoID IN
(
SELECT MIN(AutoID)
FROM 模具信息表_copy1 -- 必须使用备份表
GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(模具供应商编号)>1
)
-- 3、将重复数据,去重后的纪录,转储至模具信息表_copy1(备份的空表)中,总计 225条纪录
INSERT INTO `dl_mes`.`模具信息表_copy1` (`AutoID`, `公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`)
SELECT *
FROM 模具信息表
GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(模具供应商编号)>1;
-- 确认插入总数是不是225
SELECT COUNT(*)
FROM 模具信息表_copy1
-- 4、查询信息表中,所有重复的记录,模具信息表,总计:678条重复数据
SELECT a.模具供应商编号,a.模具出厂编号,a.*
FROM 模具信息表 a
INNER JOIN 模具信息表_copy1 b ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
-- 5、把重复的记录全部删除掉,总计:678条
SELECT a.*
FROM 模具信息表 a
INNER JOIN 模具信息表_copy1 b ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
DELETE FROM 模具信息表 a
INNER JOIN 模具信息表_copy1 b ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
-- 6、重新插入不重复的225条,即步骤3模具信息表_copy1的数据
INSERT INTO `dl_mes`.`模具信息表` (`公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`)
SELECT `公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`
FROM 模具信息表_copy1
-- 7、清空模具返修流程表数据
DELETE FROM 模具返修流程表
-- 8、根据模具信息表,初始化 模具返修流程表数据
INSERT INTO `dl_mes`.`模具返修流程表` (`公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`)
SELECT `公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`
FROM 模具信息表
四、用法总结
方法一不推荐,一来,不能利用原表本身删除,也要复制一模一样的备份表,找到原ID号;二来,IN
是SQL中查询效率最低的,学过数据优化的朋友知道,调优手段有一个减少替换使用IN语句
。
推荐方法二。