次のように、テーブルに名前のリストがあります。
paul-jones
Ron-Thomas
John-Doe
Michael-Adams
Jim-Jones
Adam-Jones
Bob-Thomas
Bill-Thomas
ハイフンの後の姓が重複しているすべての行を削除したいのですが、姓ごとに最も古い行を保持したいと思います。たとえば、上記のデータセットで削除したい
Jim-Jones
Adam-Jones
Bob-Thomas
Bill-Thomas
そしてキープ
paul-jones
Ron-Thomas
John-Doe
Michael-Adams
等々。
このようにハイフンの後にすべての文字を抽出する以下のクエリを見つけました
select SUBSTRING_INDEX(full_name,'-',-1) from names;
が、テーブルの last_name 列をこれらの値で更新する方法がわからないため、このクエリを使用して last_name 列の一意の値に基づいて削除できます
("ALTER IGNORE TABLE names ADD UNIQUE (`last_name`)") ;
これで私の質問が明確に説明されることを願っています。助けてくれてありがとう。