2015-02-02 2 views
0

У меня есть таблица с текстом в ней, я хочу как-то различить в разных группах текст, который может быть найден по запросу 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

Я не понимаю ваш вопрос. Например, почему вы хотите '3' для' c25'? О, я начинаю понимать ... –

+0

@ JérômeRadix, может быть, вы можете объяснить, потому что я до сих пор не понимаю, как c25 получил 3? – AdamMc331

+0

В дополнение к этому, 'blabla' подобен 'bla' и 'lab', так почему его номер не два? – AdamMc331

ответ

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 

Надеюсь, это может произойти полезным.

Смежные вопросы