我有一个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