Mysql,如何摆脱重复记录,加入?
让我们设想两张表:Mysql,如何摆脱重复记录,加入?,mysql,sql,duplicates,Mysql,Sql,Duplicates,让我们设想两张表: username id, name 1 username1 2 username1 3 username2 emails id, user, name 1 1 assdf@sdf.hu 2 2 afgdf@sdf.hu 3 3 gfg@sdf.hu 问题是存在重复的条目。我不能简单地丢弃它们,因为记录与它们相连,所以它们会丢失。(例如afgdf@sdf.hu电子邮件地址)。如何解决此问题?更新电子邮件集use
username
id, name
1 username1
2 username1
3 username2
emails
id, user, name
1 1 assdf@sdf.hu
2 2 afgdf@sdf.hu
3 3 gfg@sdf.hu
问题是存在重复的条目。我不能简单地丢弃它们,因为记录与它们相连,所以它们会丢失。(例如afgdf@sdf.hu电子邮件地址)。如何解决此问题?
更新电子邮件集user=1,其中user=2
,然后您只需在用户名表中删除包含id 2的行更新电子邮件集user=1,其中user=2
,然后您只需在用户名表中删除包含id 2的行更新你的用户名标签。对于每个重复的名称(三元组、四元组…),更新电子邮件表并用原始用户id替换用户。更新您的用户名选项卡。对于每个重复的名称(三元组、四元组…),更新电子邮件表并用原始用户id替换用户。
首先,您应该更新表电子邮件
,用正确的值替换用户
,以消除要删除的值
update emails set user=(select min(id)
from username
where name=
(select name from username where id=emails.user));
现在从username
表中删除重复记录。对于每个名称
,我们只保留最少id
的记录:
DELETE t1.*
FROM username t1
LEFT JOIN (select min(id) mid from username group by name) t2 ON t1.ID = t2.mid
WHERE t2.mid is null;
首先,您应该更新表电子邮件
,用正确的值替换用户
,以消除要删除的值
update emails set user=(select min(id)
from username
where name=
(select name from username where id=emails.user));
现在从username
表中删除重复记录。对于每个名称
,我们只保留最少id
的记录:
DELETE t1.*
FROM username t1
LEFT JOIN (select min(id) mid from username group by name) t2 ON t1.ID = t2.mid
WHERE t2.mid is null;
那么,如果有多个记录,它们中的哪一个想要检索?在
username.id
的情况下,您想要的结果是什么?那么,如果有多条记录,您希望检索哪一条?如果是username.id
您想要的结果是什么?