这个问题被要求接受采访,我仍然无法通过谷歌搜索找到答案。

我有一张两列的桌子。表格没有任何主键。我想删除重复的行。我可以通过alter table来做到这一点,但是他们想要删除查询。

这是表数据。

empid name
1     rahul
2     rajeev
1     rahul
2     rajeev
2     rajeev
3     elias
4     amith
2     rajeev


结果应该是

1     rahul
2     rajeev
3     elias
4     amith

最佳答案

正如@Marc B在评论中所说,这听起来像是一个技巧问题。但是如果不是...

我知道的唯一解决方案(没有意识到mysql中适当的排名功能)是以某种方式遍历每个名​​称并运行以下查询:

DELETE FROM tbl_name
WHERE name=@name
LIMIT 1


这不是一个查询,所以它不是有效的答案,但是我不确定在mysql中有其他方法可以做到。

另一种选择是使用SELECT DISTINCT到临时表中,截断原始表,然后将记录从临时表中插入到表中。同样,这不能满足要求。

10-06 12:31