我有一个表contacts,其中包含列index_id,name,address,phone1,phone2,phone3.
由于多年来管理不善,484,097中有212,019行phone1并不是唯一的.但是,每条记录都是唯一的记录.
我需要phone1独一无二,但我不想失去212k的记录.
phone3是每个记录为null的新列.我的想法是,我可以简单地移动*VALUES(phone1)成phone3
我试过这个查询不明白ON DUPLICATE UPDATE会简单地更新以前存在的记录.
insert into tmp select * from contacts
on duplicate key update phone3 = values(phone1);
Run Code Online (Sandbox Code Playgroud)
我尝试将所有重复项移动到phone3上
update contacts
set phone3 = phone1
where count(phone3) > 1;
Run Code Online (Sandbox Code Playgroud)
但这是对组功能的无效使用.
我认为这将需要一个子查询,这就是我开始感到困惑的地方.有什么建议吗?
*move意味着数据不再存在,phone1而是存在phone3.就像在phone1 = NULL和phone3 = data
mysql ×1