表名:test
id | num |
---|---|
1 | 11 |
2 | 22 |
3 | 33 |
14 | 11 |
15 | 22 |
16 | 33 |
id为主键自增id,可以看的出来14、15、16为重复数据,如何根据num删除重复的数据,只保留一条
DELETE
FROM
test
WHERE
id NOT IN ( SELECT id FROM ( SELECT max( id ) AS id FROM test GROUP BY num ) AS b );
此处 SELECT max( id ) AS id FROM test GROUP BY num 查询出来的是id为14、15、16三条数据,
所以删除的是id为1、2、3的
如果要保留id为1、2、3,删除id为14、15、16,只需要将 max 更改为 min 即可