SQL 勉強中!パート2!

まず昨日分からなかった事がちょっとだけ分かったので。
where / group by / order by がどういう順番で処理されるのか。と。

SQLチェックシート

条件の評価順位

where,group by,having,order byがどのような順番で
処理されているのかを覚えておくといい。
where → group by → having → order by
where句で条件が絞られ、group byでグループ化される。
グループ化されたものをhavingの条件で絞りorder byで
並び替えて表示する。

なるほどー。
なるほどくん
逆転裁判
この曲もいいよ!

それはいいとして。

MySQL のバージョン 3.23.58 を使ってるんですけどね。

MySQL Manual | 3.6.4 特定のフィールドのグループごとの最大値が格納されているレコード
そうそう。こういう事がやりたかったわけですよ。

グループ分けして、そのグループの中で最大値を持ってるレコードを取得する。

id が "je-pu-pu" のレコードを thread でグループ分けして、同じ thread の中で time の値が最大のものを time が大きい順に並べ替えて取得する・・・わけわからん。

idthreadtimesubject
je-pu-pu02000-01-01 00:00:00test A
je-pu-pu12000-01-02 00:00:00test B
je-pu-pu22000-01-03 00:00:00test C
je-pu-pu02000-01-04 00:00:00Re: test A
je-pu-pu22000-01-05 00:00:00Re: test C
hoge02000-02-01 00:00:00test 1
hoge12000-02-02 00:00:00test 2

こういうテーブルがあった時に

idthreadtimesubject
je-pu-pu22000-01-05 00:00:00Re: test C
je-pu-pu02000-01-04 00:00:00Re: test A
je-pu-pu12000-01-02 00:00:00test B

こういう結果が欲しいんだ YO !

idthreadtimesubject
je-pu-pu22000-01-03 00:00:00test C
je-pu-pu02000-01-01 00:00:00test A
je-pu-pu12000-01-02 00:00:00test B

これでもいい YO !

いわゆる掲示板のスレッドの「上げ」っちゅうやつを実装したいんだ YO !

はい。というわけでね。わけわかりませんけれども。

MySQL バージョン 4.1 より前のバージョンじゃサブクエリが実装されてないからめんどくさいよ!

もともと MySQL は実行速度を重視して作られたので SQL の高度な機能は実装されてないそうです。
サブクエリとかストアドプロシージャとか。

最新バージョンではそういう機能も実装されてるそうですが、
うちの TurboLinux 7 ws 君にもともと入ってるのは 3.23.58 です。
アップグレードする勇気も無く。

これからは PostgreSQL か!そうなのか!

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: SQL 勉強中!パート2!

このブログ記事に対するトラックバックURL: http://je-pu-pu.jp/blog/mt-tb.cgi/71

コメントする

このブログ記事について

このページは、が2004年11月 9日 13:51に書いたブログ記事です。

ひとつ前のブログ記事は「SQL 勉強中」です。

次のブログ記事は「焼き鳥屋」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.0