dポイントプレゼントキャンペーン実施中!

group byで特定のカラムをまとめる際に、最後(最新)のレコードを抽出したいのですが
最初(古い)の行が抽出されてしまいます。

例えば、threadカラムとuptimeカラムがあるテーブルBBSで
threadカラムをgroup byでまとめる際にuptimeの降順(desc)でまとめたい場合
どのようにしたらいいでしょうか?

【テーブルBBS】

id thread uptime
1 1 1230100000
2 2 1230200000
3 1 1230300000
4 3 1230400000
5 1 1230500000
6 2 1230600000

select * form bbs group by thread order by uptime desc

だと

thread uptime
3 1230400000
1 1230300000
2 1230200000

になってしまいます。

次のような結果を表示するにはどのようにしたらいいでしょうか。

thread uptime
2 1230600000
1 1230500000
3 1230400000

また、DISTINCTを使うと同じフィールド内に重複したレコードがある場合は最初のレコードのみ表示されますが、最後のレコードのみ表示するにはどのようにすればいいのでしょうか?

よろしくお願い致します。

A 回答 (2件)

単にthread毎にまとめた最大のuptimeをとるだけですよね?


select thread,max(uptime) as uptime form bbs group by thread order by uptime desc

これにidの情報がほしいということだと、サブクエリが必要になります
    • good
    • 2
この回答へのお礼

どうもありがとうございました。
助かりました。

お礼日時:2009/01/09 18:15

明示的に


select thread,uptime
from ( select thread,max(uptime) as uptime from bbs group by thread )
order by uptime desc
と書けばいいのでは。
> また、DISTINCTを使うと同じフィールド内に重複したレコードがある場合
> は最初のレコードのみ表示されますが、最後のレコードのみ表示するには
> どのようにすればいいのでしょうか?
これは具体的にはどんな現象でしょうか?
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
助かりました。

お礼日時:2009/01/09 18:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す