Mysql快速刪除表中重複的數據

表結構sql

 1 CREATE TABLE T_VENDOR (
 2   ID BIGINT(12) NOT NULL AUTO_INCREMENT COMMENT 'ID',
 3   COUNTRY CHAR(2) DEFAULT NULL COMMENT '國家',
 4   VENDOR VARCHAR(20) DEFAULT NULL COMMENT '客戶',
 5   CAT_ID BIGINT(12) DEFAULT NULL COMMENT '分類ID',
 6   APP_ID BIGINT(12) DEFAULT NULL COMMENT 'APPID',
 7   ORDBY BIGINT(12) DEFAULT NULL COMMENT '分類排序(在具體分類下的順序)',
 8   STATE CHAR(2) DEFAULT NULL COMMENT '分類狀態(01 啓用, 00禁用)',
 9   CREATE_TIME DATETIME DEFAULT NULL COMMENT '建立日期',
10   UPDATE_TIME DATETIME DEFAULT NULL COMMENT '修改時間',
11   PRIMARY KEY (ID),
12 ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

實現目標spa

  刪除同一個國家、客戶和分類下的重複APP,保留ID最小的記錄code

處理思路blog

  Mysql不能把當前表的查詢做爲當前表的修改條件,故作一個二級子查詢排序

刪除腳本class

DELETE FROM T_VENDOR WHERE ID NOT IN (SELECT MINID FROM (SELECT MIN(ID) AS MINID FROM T_VENDOR GROUP BY COUNTRY,VENDOR,CAT_ID,APP_ID) B);
相關文章
相關標籤/搜索