删除MySQL部分匹配

删除MySQL部分匹配,mysql,filter,duplicates,partial,Mysql,Filter,Duplicates,Partial,我有一个自动生成标记的MySQL表,我想删除长标记中出现的任何短标记 例如,假设SELECT*fromtagsreturns Donald Trump Donald Trump Hillary Clinton Hillary Clinton US Election US Election 我想删除出现在较长标记中的任何较短标记,因此我最终得到: Donald Trump Hillary Clinton US Election 这可能吗 谢谢。将表本身连接起来,并删除在较长名称中具有较短名称的

我有一个自动生成标记的MySQL表,我想删除长标记中出现的任何短标记

例如,假设
SELECT*fromtags
returns

Donald Trump
Donald
Trump
Hillary Clinton
Hillary
Clinton
US Election
US
Election
我想删除出现在较长标记中的任何较短标记,因此我最终得到:

Donald Trump
Hillary Clinton
US Election
这可能吗


谢谢。

将表本身连接起来,并删除在较长名称中具有较短名称的行

DELETE t1
FROM tags AS t1
JOIN tags AS t2 ON LENGTH(t1.name) < LENGTH(t2.name) AND LOCATE(t1.name, t2.name)
删除t1
从标记中选择t1
在长度(t1.name)<长度(t2.name)和位置(t1.name,t2.name)上将标记连接为t2