contacts列、、、、、、index_idを含むテーブルnameがaddressありphone1ます。phone2phone3
長年にわたる不十分な管理のために、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);
私はすべての複製をphone3に移動*してみました
update contacts
set phone3 = phone1
where count(phone3) > 1;
しかし、それはグループ関数の無効な使用法です。
これにはサブクエリが必要になると思います。そこで混乱し始めます。何か提案はありますか?
* moveは、データが存在しなくなりphone1、むしろ存在することを意味しphone3ます。とのようphone1 = NULLにphone3 = data