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