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的记录