単語の表とフレーズの表があります。各単語を含むフレーズの数を数えたいのですが。
このクエリは、(単語、フレーズ)ペアのリストを表示します。カウントを取得するにはどうすればよいですか?それを行うためのより効率的な方法はありますか?
words.word、phrases.phraseを選択します
左の単語からフレーズに参加
onphrases.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