【実現したいこと】
unionで結合済みのテーブルの複数列で、LIKEに該当する語句の数が多い順にデータを並び替えたい。
SELECT cont1,cont2,null as cont3,null as cont4 FROM フルーツ WHERE cont1,cont2 LIKE '%りんご%' union all SELECT null,null,cont3,cont4 FROM やさい WHERE cont4 LIKE '%りんご%'
テーブル:フルーツ
id | cont1 | cont2 |
---|---|---|
1 | りんごりんごみかん | ぶどう |
2 | りんご | ぶどうりんごりんご |
3 | みかんみかんりんごりんごりんご | ぶどうりんご |
テーブル:やさい
id | cont3 | cont4 |
---|---|---|
4 | とまと | りんご |
↓
↓
以下のように「りんご」という語句の数が多い順に並べ替えたいです。
↓
↓
id | cont1 | cont2 | cont4 |
---|---|---|---|
3 | みかんみかんりんごりんごりんご | ぶどうりんご | |
2 | りんご | ぶどうりんごりんご | |
1 | りんごりんごみかん | ぶどう | |
4 | りんご |
以下では上手く動きませんでした。
SELECT * FROM フルーツ WHERE cont1,cont2 LIKE '%りんご%' union all SELECT * FROM やさい WHERE cont4 LIKE '%りんご%' order by (LENGTH(cont1) - LENGTH(REPLACE(cont1,"りんご",""))) + (LENGTH(cont2) - LENGTH(REPLACE(cont2,"りんご",""))) + (LENGTH(cont4) - LENGTH(REPLACE(cont4,"りんご",""))) DESC
回答2件
あなたの回答
tips
プレビュー