mysql> desc app01_hentai_img; +---------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | image | varchar(255) | NO | UNI | NULL | | | sort | int(11) | NO | | NULL | | | name_id | int(11) | NO | MUL | NULL | | +---------+--------------+------+-----+---------+----------------+ 4 rows in set 需求:去掉sort,name_id重複的記錄。 DELETE app01_hentai_img FROM app01_hentai_img, ( SELECT min(id) id, image, sort, name_id FROM app01_hentai_img GROUP BY sort, name_id HAVING count(sort) > 1 ) t2 WHERE app01_hentai_img.name_id = t2.name_id and app01_hentai_img.sort = t2.sort AND app01_hentai_img.id > t2.id;
( SELECT min(id) id, image, sort, name_id FROM app01_hentai_img GROUP BY sort, name_id HAVING count(sort) > 1 ) t2
查詢出重複記錄形成一個集合(臨時表t2),集合裏是每種重複記錄的最小ID
app01_hentai_img.name_id = t2.name_id and app01_hentai_img.sort = t2.sort
關聯 判斷重複基準的字段
app01_hentai_img.id > t2.id
根據條件,刪除原表中id大於t2中id的記錄