mysql字段去重,内容颠倒重复保留一个即可

问题遇到的现象和发生背景

数据库去重分组查询

问题相关代码,请勿粘贴截图

直接放执行sql吧

create table tt
(
    name varchar(255) null
);

INSERT INTO java_se.tt (name) VALUES ('a');
INSERT INTO java_se.tt (name) VALUES ('b');
INSERT INTO java_se.tt (name) VALUES ('a+b');
INSERT INTO java_se.tt (name) VALUES ('b+a');
INSERT INTO java_se.tt (name) VALUES ('c');
INSERT INTO java_se.tt (name) VALUES ('a+c+b');
INSERT INTO java_se.tt (name) VALUES ('a+b+c');
INSERT INTO java_se.tt (name) VALUES ('a');
运行结果及报错内容

进行分组

img


这里A+B 和 B+A性质相同只显示一种即可

我的解答思路和尝试过的方法

尝试去+号
select name,replace(t.name,'+','') na from tt as t

img


然后打算字段内先字母排序 然后去重 但是不可行

我想要达到的结果

排除字母颠倒得重复

不行,对于计算机来说,ab和ba就是两个东西。你全靠sql语句应该很难实现。
你可以选择其他编程语言,读取数据库,将这个字段的值取出来进行处理,在保存进mysql一个新字段中,在根据新字段去重

用MySQL实现超级麻烦的,加一个ID列,先通过join把单行的字符串列拆成多行,然后按ID和name排序,之后通过group_concat收集起来,然后你就得到了排过序的字符串就能通过group去重重复了。
随便换一个支持数组类型的库都简单很多。

我第一眼想到的是KMP,字符串匹配算法,然后将筛选的结果再存到数据库,哈哈