前提条件
item テーブルには product_name と product_detail を持っている。
ID | product_name | product_detail |
---|---|---|
1 | ストライプのシャツ | 綿100% |
2 | 半袖Yシャツ | Tシャツ生地を採用 |
3 | ロゴ入りTシャツ | サイズ展開豊富 |
やりたいこと
各項目に LIKE 検索をかけて、ソート順は、product_name に引っかかったもの、次に product_detail に引っかかったもの、の順にしたい。
やったこと
select * from item
where product_name like '%Tシャツ%'
or product_detail like '%Tシャツ%'
order by (( case when product_name like '%Tシャツ%' then 100 else 0 end ) + ( case when product_detail like '%Tシャツ%' then 10 else 0 end )) DESC
結果
こんな感じでソートされる
ID | product_name | product_detail |
---|---|---|
3 | ロゴ入りTシャツ | サイズ展開豊富 |
2 | 半袖Yシャツ | Tシャツ生地を採用 |