2017-11-21 5 views
0

私は形式のテーブルを持っている:他のフィールドが入っているものを保持しているmysqlの重複行を削除するにはどうしたらいいですか?

NAME__TELEPHONE__MONTH___YEAR

aaa______2222_________jan______2018

bbb______2222________ _____________

aaa______2222___________ ___________

をここで私は、重複電話をチェックします月と年のフィールドが入力されているものを除くすべてを削除します。

私は非常にジョインクエリに満足していないので、どんな助けも高く評価されています。私は同じような質問を見つけましたが、それを使って、他のフィールドがいっぱいになっています。

誰でも手伝っていただきありがとうございます。

+0

の可能性のある重複https://stackoverflow.com/q/2630440/8587776 –

答えて

0

なぜこれを行うだけではないのですか?私は最高の答えはちょうど他のテーブルに移動、削除されていないことを見つける

delete t from table t 
    where month is null and year is null; 
1

は、このように、より速く、より少なく危険である:

INSERT INTO tempTableName(ID、名前、電話、月、年) SELECT DISTINCT ID、名前、電話、月、年 FROM tableName;

うまくいきますように!

+0

これは、WHEREで、私は意味@Gordon Linoff –

+0

から他の回答に参加することができます –

0

これを試してみてください:

delete from table t 
inner join 

(select name,Telephone ,row_number() over (partition by name,Telephone order by month,year) RN 
from table 
) temp 
on t.name = temp.name and 
    t.Telephone = temp.Telephone 
where RN > 1 
関連する問題