mysqlで文字列が一致した数を求め並べ替えたい
name | keyword
---------------------
イチゴ | 果物,赤,甘い,春
レモン | 果物,黄色,酸っぱい,種あり,柑橘類
ミカン | 果物,橙,甘い,酸っぱい,柑橘類,冬,こたつ
ブドウ | 果物,紫,甘い,皮あり,種あり,ワイン
人参 | 野菜,橙,固い
大根 | 野菜,白,おでん,冬
このように、キーワードをコンマで分けているテーブルがあるとします。
例えば「果物」「甘い」「種あり」の三つのワードでkeywordを検索した時
name
-------
ブドウ (3ワード一致)
イチゴ (2ワード一致)
ミカン (2ワード一致)
レモン (1ワード一致)
上のように一致するキーワードが多い順に表示させたいのですがうまくいきません
select name from tb where keyword like '%果物% or keyword like '%甘い% or keyword like '%種あり% order by count(name);
これだと上手くいきませんが、意味的にはこのようにしたいと思ってます。
joinで同じテーブルを結合しても思うように行きませんでした。
何か良い方法があればご教授お願いいたします。
お礼
ご丁寧にどうもありがとうございます。 おかげさまで解決しました!(^-^) 間に余計な改行やスペースを入れて投稿回避できないようにする なんてできると思わなかったので助かりました。