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