【Ruby】Ruby on Rails Part6
レス数が950を超えています。1000を超えると書き込みができなくなります。
0993nobodyさん
2009/04/29(水) 14:00:00ID:???なるほど。likeの部分一致の遅さを許容できるならやり方はあるよ。
3回SQLを打つのは速度や負荷を考えるとやらない方がいいと思う。
すでに話題になってるように重複の問題もあるし。
やり方の一つとしては「ソートキーを作る」。
MySQLはほとんどやらないし、いま手元に環境はないから検証できないのだが、
case文はサポートされていたと思う。
select column_1, columnt_2, column_3,
case
when name = '牛乳' then 0
else 1
end match
from items
where name like '%牛乳%'
order by match, sort_key
などとやれば完全一致したものは「match」列に「0」が、そうでないものは「1」が返るはず。
これを第1ソートキーにすればいい。
部分一致や後方一致もちょっと調べたところ、
文字列比較関数なるものをを使えばできるんじゃないだろうか。
優先させたい条件順に番号をふればきれいに並ぶと思う。
これはSQLネタのように思うので、
これ以上知りたければSQLスレがいいだろう。
あるのか知らないけど。
あともし解決したら、差し支えない範囲で解決策をレスしてほしい。
ほかの人が参考にできるから。
聞いてわかってさよならが多くなってるからね。
レス数が950を超えています。1000を超えると書き込みができなくなります。