[pgsql-jp: 35282] Re: 1件ずつ×4+ランダム2件 のような柔軟な取得方法について

ISHIDA Akio iakio @ mono-space.net
2005年 4月 18日 (月) 17:17:24 JST


こんにちは。石田@苫小牧市です。

union を使わずに order by だけでやってみました。

select t.*, t2.*

  from t

       left join

      (select max(id) as id from t group by shop) as t2 using (id)

 order by t2.id, random()
 limit 6;

という感じでいかがでしょうか。

全体のテーブルの中で、各店舗の最大のもの4件だけが上にきて、
それ以外のものはランダムに並ぶ、というソートをして、
そこから上位6件を取り出しています。

# ところでnullを含むカラムで昇順にソートすると、
# null値は下にくるってことでよかったでしたっけ?

-- 
ISHIDA Akio <iakio @ mono-space.net / ishida @ cycleof5th.com>



pgsql-jp メーリングリストの案内