SQL:查找在表的不同行中重复的单词

时间:2017-01-12 12:37:41

标签: mysql sql repeat

例如,我有那张表

id      title
1       abcd apple 
2       adqsdd google
3       adzdaz android
4       gdfgdfg apple
5       yuiyu windows

因此,我们可以看到“apple”这个词在不同的行中重复出现。 如何进行SQL查询,该查询将显示不同行中的单词重复,因此它将显示:“apple”

2 个答案:

答案 0 :(得分:0)

唯一可行的方法是,如果你有一个单词列表。如果是这样的话:

select w.word, count(*)
from words w join
     t
     on concat(' ', t.title, ' ') like concat('% ', w.word, ' %')
group by w.word
having count(*) > 1;

编辑:

如果您没有单词,但是您知道“标题”具有固定数量的单词,则可以生成可用单词。例如,如果所有标题最多包含4个单词:

select w.word, count(*)
from (select substring_index(title, ' ', 1) as word union
      select substring_index(substring_index(title, ' ', 2), ' ', -1) union
      select substring_index(substring_index(title, ' ', 3), ' ', -1) union
      select substring_index(substring_index(title, ' ', 4), ' ', -1)

     ) w join
     t
     on concat(' ', t.title, ' ') like concat('% ', w.word, ' %')
group by w.word
having count(*) > 1;

显然,您可以将其概括为更长的标题。

答案 1 :(得分:0)

GROUP BYHAVING上阅读,这两项将允许您选择此类条件(使用HAVING COUNT(*)>1等)。