我有四列都是 varchar(x)
。
- 经销商编号
- 名字
- 姓氏
- 街道地址
然后我有一个名为 SystemId
的自动递增的 int
列。
我想做的是删除表中 4 列匹配的所有行,但我想保留具有最大自动递增 ID 的行。
例如
SystemId|DealerId|FirstName|LastName|StreetAddress
1|Hello|Mike|Tola|1923 somewhere dr
2|Hello|Mike|Tola|1923 somewhere dr
在上面的示例中,我想删除 SystemId 1
并保留 SystemId 2
。我有大约 300k
行,所以不可能一一获取这些 ID。
最佳答案
您可以使用直接连接:
delete t2
from mytable t
join mytable t2 on t.dealerid = t2.dealerid
and t.firstname = t2.firstname
and t.lastname = t2.lastname
and t.streetaddress = t2.streetaddress
and t.systemid > t2.systemid
参见 SQL Fiddle
诀窍是比较 t.systemid > t2.systemid
,它保持最高(最后添加)的 id。
关于mysql - 如何在保留至少一行的同时删除重复的 MySQL 表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23582774/