我有一个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'
答案 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;