[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 メーリングリストの案内