超过2或3个相同的记录:删除Mysql

时间:2016-03-31 07:21:30

标签: mysql

我有一个mysql表,我有超过2或3个相同的记录。 在一张桌子上, 连接column1,column2,column3和column4具有相同的值,然后这些记录被视为重复。 我不关心表中的其余列,但如果上面4列的组合相同,我想删除min(Id)的所有记录,保留一个max(id)的记录

  id,      site,      sector,       para1,       para2
'652',    'LCUE1015', '1',          '2275',       '0'
'166994', 'LCUE1015', '1',          '2275',       '0'
'5343',   'LCUE1015', '1',          '2275',       '0'
'166003', 'LCUE1015', '1',          '2275',       '0'
'76351',  'LCUE1015', '1',          '2275',       '0'
'77342',  'LCUE1015', '1',          '2275',       '0'

1 个答案:

答案 0 :(得分:1)

E.g。 (查询比这个特定问题严格必要的查询)

DELETE x 
  FROM my_table x 
  LEFT 
  JOIN 
     ( SELECT site
            , sector
            , para1
            , para2
            , MAX(id) id 
         FROM my_table 
        GROUP 
           BY site
            , sector 
            , para1
            , para2
     ) y 
    ON y.site = x.site
   AND y.sector = x.sector
   AND y.para1 = x.para1
   AND y.para2 = x.para2
   AND y.id = x.id  
 WHERE y.id IS NULL;