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
您想要的结果是什么?