计算两个表格之间的匹配

问题描述:

我有一个单词表和一个短语表。我想要统计每个单词包含多少个词组。计算两个表格之间的匹配

此查询给我一个(单词,短语)对列表;我如何获得计数?有没有更有效的方法来做到这一点?

选择words.word,phrases.phrase

从文字左加入短语

上phrases.phrase RLIKE CONCAT( '(^ | [^ AZ])',words.word,“($ | [^ AZ])');

使用现有查询,您可以添加一个GROUP BY子句和COUNT

SELECT 
    words.word, 
    COUNT(phrases.phrase) as Count 
FROM 
    words 
    LEFT JOIN phrases 
     ON phrases.phrase RLIKE CONCAT('(^|[^a-z])', words.word, '($|[^a-z])') 
GROUP BY 
    words.word 

或者,你可以用一个子查询,而不是实现这一联接:

SELECT 
    words.word, 
    (SELECT COUNT(*) 
     FROM phrases 
     WHERE phrase RLIKE CONCAT('(^|[^a-z])', words.word, '($|[^a-z])') 
    ) AS Count 
FROM words