mysql删除重复数据只保留一条

表名: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 即可

你可能感兴趣的:(mysql删除重复数据只保留一条)