我的表中有一个名称列表,如下所示:
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`)") ;
我希望这清楚地解释了我的问题。谢谢您的帮助。