mysql:15792
From: <gotou1213@xxxxxxxxxx>
Date: Thu, 12 Jul 2012 00:40:45 +0900
Subject: [mysql 15792] Re: カテゴリ毎の上位3件
後藤です。 > 後藤さんのやり方にはひとつ問題がありまして、3件以上のレコードがないカテゴリの > 抽出ができません。 なるほど、それもそうでした・・・ > 中川さんからのご指摘のように3件無いcategoryは <= が成り立たなくなるので、 > (select count(*) from saledata where category = t.category) < 3 or > という条件も付ければよさそうですね。 or で相関サブクエリを繋げるよりも、limit 2.1 で結果がない場合は そのカテゴリのデータは 3 件未満 = そのカテゴリのデータは全部 という事なので、次のように IFNULL の方が saledata の走査回数が減って お得だと思われます。 select category, name, price from saledata AS t where price <= IFNULL(( select price from saledata where category = t.category order by category asc, price asc limit 2,1 ), price) order by category asc, price asc ; 以上です。
15783 2012-07-11 02:56 [<shin-1@xxxxxxxxxx> ] カテゴリ毎の上位3件 15784 2012-07-11 10:27 ┣[高橋政利 <takahashi@] 15785 2012-07-11 12:28 ┣[中川 貴 <takashi.nak] 15796 2012-07-12 04:10 ┃┗[<shin-1@xxxxxxxxxx> ] 15786 2012-07-11 13:49 ┗[<gotou1213@xxxxxxxxx] 15787 2012-07-11 14:17 ┣[<gotou1213@xxxxxxxxx] 15788 2012-07-11 15:00 ┃┗[中川 貴 <takashi.nak] 15790 2012-07-11 16:09 ┗[<shin-1@xxxxxxxxxx> ] 15791 2012-07-11 17:11 ┣[あきら <akirainfoml@] 15794 2012-07-12 03:38 ┃┗[<shin-1@xxxxxxxxxx> ] -> 15792 2012-07-12 00:40 ┗[<gotou1213@xxxxxxxxx] 15795 2012-07-12 03:42 ┗[<shin-1@xxxxxxxxxx> ]