LoginSignup
1
0

More than 3 years have passed since last update.

SQL ORDER BY 句で CASE を使って LIKE でマッチした順にソートしたい

Posted at

前提条件

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シャツ生地を採用
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0