以下代码返回特定列的重复行列表。在这种情况下,我试图找到大学名称的重复。我的问题是如何删除重复项,并为每个不同的university_name留下一份副本?SQL如何删除特定列的重复行并保留一行
Select * from `university` where `university_name` in (select `university_name` from `university` group by `university_name` having count(*) > 1)
这是结果:
能否请你解释我是很新的SQL!先谢谢你!!如果你想保持与最低值ID行
DELETE u
FROM university u
LEFT JOIN
(
SELECT MIN(ID) ID, university_name
FROM university
GROUP BY university_name
) v ON u.ID = v.ID AND
u.university_name = v.university_name
WHERE v.ID IS NULL
如果您不在乎要删除哪两个,请将整个结果分组并选择其ID。然后删除结果。如果你想删除第二个,你可以选择MAX(id)。 – ericosg
如果有一个university_name重复,您想保留哪一行? – jarlh
实际上我可能想要更大的id被删除并保留最低的id以供将来参考 – Sol