计算两个表格之间的匹配
问题描述:
我有一个单词表和一个短语表。我想要统计每个单词包含多少个词组。计算两个表格之间的匹配
此查询给我一个(单词,短语)对列表;我如何获得计数?有没有更有效的方法来做到这一点?
选择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