2010年6月 7日

[mysql 15330] Re: 【お知恵拝借】副問い合わせに limit 3

えんどうです。
お返事有り難うございました。

create table tbl
(
id int auto_increment primary key,
field int,
ordfield int

);

INSERT INTO `carelabo_portal`.`tbl`
(`id`, `field`, `ordfield`) VALUES
(NULL, '0', '1'), (NULL, '1', '11'), (NULL, '2', '55'),
(NULL, '0', '2'), (NULL, '1', '22'), (NULL, '2', '66'),
(NULL, '0', '3'), (NULL, '1', '33'), (NULL, '2', '77'),
(NULL, '0', '4'), (NULL, '1', '44'), (NULL, '2', '88');

で、実行した時、

1, 0, 1
4, 0, 2
7, 0, 3
2, 1, 11
5, 1, 22
8, 1, 33
3, 2, 55
6, 2, 66
9, 2, 77

(おそらく)上記が出て欲しいです。
データがダミーなので、おそらくと書きましたが、なんせ、グ
ループ(field)毎に(ordfiledの)トップ3が出れば嬉しい
のです。

今は、3回 SQL を( field 毎に)発行して、プログラムでがっ
ちゃんこしてます。ちょっと、不細工・・・(^^;

Mon, 07 Jun 2010 22:00:27 +0900 に、
Miyata Masaki <catlover@xxxxx> さんは書きました:

> ミヤタと申します。
>
> > どなたか、上記 SQL の結果を実現する方法をお教え下さい。
>
> 実現したい動作がよく分からないので、このあたりを付けて頂けると分り易いかと。
> ・DDL文
> ・INSERT文(数件程度)
> ・想定結果
>
> --
> Masaki Miyata
> catlover@xxxxx
>
> > From: 遠藤 俊裕 <endo@xxxxx>
> > To: ml@xxxxx
> > Subject: [mysql 15328] 【お知恵拝借】副問い合わせに limit 3
> > Date: 2010/06/07 21:41
> >
> > えんどうです。
> >
> > 皆様、お知恵を拝借させて下さい。
> >
> > tbl の中の field ごとに top 3 を出したいために、以下の SQL
> > を書いてみました。
> >
> > select * from tbl as t1
> > where id in
> > (
> > select id from tbl as t2
> > where t1.field = t2.field
> > order by ordfield
> > limit 3
> > )
> > order by ordfield
> >
> > ダメでした。
> >
> > どうも、in の中で limit が使えない様です。
> >
> > どなたか、上記 SQL の結果を実現する方法をお教え下さい。
> >
> > 何卒よろしくお願い致します。
> >
> > MySQL version = 5.1.44
> >
> > --
> > えんどう
> > endo@xxxxx,endo@xxxxx
> >
> >
>

--
えんどう
endo@xxxxx,endo@xxxxx

投稿者 xml-rpc : 2010年6月 7日 22:33
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/96204
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。