MySQLの文字列フィールドに格納された文章の中にキーワードが何回出現するかを調べ、その出現回数順に並び替えてレコードを取得する方法です。
MySQLにはキーワードの出現回数を求めるような機能は用意されていないので、少し工夫が必要になります。
その方法としては、「元データの文字数」から「キーワードを削除(空白に置換)した後の文字数」を引いて、それを「キーワードの文字数」で割ると「出現回数」が求められます。
出現回数順に並び替えるためのSQLは下記のような感じです。
SET @keyword:='キーワード' SELECT (( LENGTH( col ) - LENGTH( REPLACE( col, @keyword, '' ))) / LENGTH( @keyword )) AS CNT FROM tbl ORDER BY CNT DESC;
以上、参考になれば幸いです。