[MySQL] Data deduplication, only keep one (highest efficiency)

series of articles

C# underlying library-MySQLBuilder script construction class (select, insert, update, in, automatic generation of SQL with conditions)
link to this article: https://blog.csdn.net/youcheng_ge/article/details/129179216

C# underlying library – MySQL database operation auxiliary class (recommended reading)
link to this article: https://blog.csdn.net/youcheng_ge/article/details/126886379

C# underlying library – the use of SQLite (small, local database)
link to this article: https://blog.csdn.net/youcheng_ge/article/details/123666958

[Improve programming efficiency] Import Excel data into the database in batches
Link to this article: https://blog.csdn.net/youcheng_ge/article/details/126427323

[Oracle] The database server restricts ip access to
this article link: https://blog.csdn.net/youcheng_ge/article/details/122220930

[Oracle] Excel Import Data Tutorial
Link to this article: https://blog.csdn.net/youcheng_ge/article/details/118722756

[Oracle] Database Restore Tutorial_Data Pump
Link to this article: https://blog.csdn.net/youcheng_ge/article/details/118054855

[SQL] How to query table fields and identify primary keys
Link to this article: https://blog.csdn.net/youcheng_ge/article/details/110820405

[SQL] Usage of outer apply
Link to this article: https://blog.csdn.net/youcheng_ge/article/details/79903489

[SQL] Multi-table connection duplicate data processing
Link to this article: https://blog.csdn.net/youcheng_ge/article/details/79903619

MySQL installation tutorial (detailed)
link to this article: https://blog.csdn.net/youcheng_ge/article/details/126037520

MySQL uninstall tutorial (detailed)
link to this article: https://blog.csdn.net/youcheng_ge/article/details/129279265

[MySQL] How to add the "total" field for group by classification and summary?
Link to this article: https://blog.csdn.net/youcheng_ge/article/details/128217837

[MySQL] Usage of WITH CHECK OPTION
Link to this article: https://blog.csdn.net/youcheng_ge/article/details/128147196

[MySQL] How to improve efficiency by using stored procedures to insert tens of millions of data?
Link to this article: https://blog.csdn.net/youcheng_ge/article/details/77728189

[MySQL] Realization of row and column transposition of database table
Link to this article: https://blog.csdn.net/youcheng_ge/article/details/77625052

[MySQL] In the query, the NULL value is converted to an empty string
This link: https://blog.csdn.net/youcheng_ge/article/details/130381878


foreword

This column is [Database], which mainly introduces the functions and characteristics of SQL, SQL data definition language (table, view, index, constraint), SQL data operation language (data retrieval, data insertion, data deletion, data update), creation and deletion Triggers, SQL Data Control Language (Security and Authorization, Transaction Processing), and Embedded SQL.
If you are interested in this album, keep paying attention. If you have any questions, you can also give feedback in the comment area and private message me.
insert image description here

1. Technical introduction

1.1 Method 1

Use GROUP BYclassification and summary to find the record with the smallest auto-increment ID (delete first) and delete INthe record

1.2 Method 2

采用备份表的方式, copy the empty backup table, take out the duplicate records, insert the backup table after deduplication, delete all duplicate records in the original table, and then reinsert the backup table records (non-duplicate records) into the original table.

2. Data preparation

2.1 Database table structure

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. Solutions

3.1 Method 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 Method 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 模具信息表


Four, usage summary

Method 1 is not recommended. First, you cannot use the original table itself to delete, but you must also copy the same backup table to find the original ID number. Second, it is the lowest query efficiency INin SQL. Friends who have studied data optimization know that tuning methods There is one 减少替换使用IN语句.
Recommended method two.

Guess you like

Origin blog.csdn.net/youcheng_ge/article/details/132087190