将所有类似文本分组到不同的组中

时间:2015-02-02 23:13:23

标签: mysql sql database

我的表中包含文本,我想以某种方式在不同的组中区分LIKE查询可以找到的文本。所以例如我有

blabla
a1aaaa
bla
lab
aaa
a1
c25

我希望得到以下结果或类似内容,以便我可以在我的脚本中轻松使用。

blabla 1
bla    1
lab     1
a1aaaa 2
aaa    2
a1     2
c25    3

情况如下

bla IS NOT LIKE '%blabla%'
lab IS NOT LIKE '%blabla%'
blabla IS LIKE '%bla%' So it should go into one group
lab IS NOT LIKE '%bla'
blabla IS LIKE '%lab' Lab should be added to the first created group

基本上我想将相似的单词分组到不同的小组

1 个答案:

答案 0 :(得分:1)

请尝试以下方法:

SELECT DISTINCT
    A.text_col AS `group_name`, 
    B.text_col AS `member`
FROM
    text_table AS A
    INNER JOIN text_table AS B
        ON A.text_col LIKE concat( '%', B.text_col, '%')

根据您的示例数据,它应该为您提供:

group_name |  member
-------------------------------------
blabla        blabla 
blabla        bla 
blabla        lab 
a1aaaa        a1aaaa
a1aaaa        aaa 
a1aaaa        a1  
c25           c25

我希望它可能会有所帮助。