0

複数の入力でstyleIDフィールドとcolorIDフィールドを検索したい。たとえば、styleID = 3、styleID = 4、colorID = 1、colorID = 5のテーブルを検索し、それらの結果をboxIDでグループ化します。そのグループ内の実際の一致の数で結果を並べ替えます。

styleIDが4、styleIDが3、colorIDが1、colorIDが5のboxIDは、すべての条件に一致するため、最初に表示されます。

ID boxIDstyleIDcolorIDキーワード1141
セクシーネクタイ2132
レッドネクタイ3136
ストライプブルー4232
チェッカー5235ブルーでは
ない6246
シアンはパープル7342
ファンシー
834 5ファンシー9342
ファンシー
4

1 に答える 1

2

あなたはそのようなことを試すことができます

select boxId, sum(matches) 
from (select boxID, 
      (case when styleId IN (4) then 1 else 0 end) + 
      (case when colorId in (1, 5) then 1 else 0 end) matches 
       from test) t1
group by boxId
order by sum(matches) desc;

http://sqlfiddle.com/#!2/b5879/20

于 2012-05-07T14:52:14.160 に答える