最大値のレコードを取得する方法

自分はこの方法しか知らないので知ってる人は是非教えてほしいところですが。

1テーブル内で、履歴的な管理をしているときに
たとえば↓みたいなテーブルがあって

CREATE TABLE LOG_TABLE 
(
	 ID NUMBER
	,LOG_ID NUMBER
	,NAME VARCHAR2(20)
	,REGISTER_DATE TIMESTAMP(6)
	,CONSTRAINT PK_LOG_TABLE PRIMARY KEY (ID) USING INDEX
)

最新のレコードを取得するためにはID単位でLOG_IDのMAXレコードが必要になったときには

SELECT
	LOG.*
FROM
	LOG_TABLE LOG
WHERE
	LOG.ID IN (
		SELECT
			MAX(L.ID) ID
		FROM
			LOG_TABLE L
		GROUP BY
			L.LOG_ID)

というように自己結合してMAX対象レコードを取るのが一般的かなーと思います。

たかが最新を取りたいだけなのにこんなめんどいSQLをかかにゃいけないのは
問い合わせ言語のSQLと言うものの限界なのかもしれない


話は変わるのですがOracleOpenWorld行ってきました。
http://blogs.oracle.com/Oraclejapanpr/2009/04/oracle_openworld_tokyo_2009_3.html

基調講演聞いてきましたが
オラクルのイノベーションを実現するために今後も企業買収は進めていくそうです。
話によると、

  • Application
  • Database
  • Middleware
  • Infrastructure

のすべてを掌握したいそうで、ただし、oracleすべてで完結出来る状態にはするが
ほかのソリューションとの親和性を高くしたいみたいです。
ただし、Oracleで揃えたときに、ユーザに利便性の高いものを提供出来るようにしたいとのこと。

初めて行ったけど面白かったー。
基調講演の最中みんな結構写真とか取ってて、自分もデジカメ持参したから取ろうと思ったら電池切れてた。
んでよくよく周りを見回したら携帯で取ってる人も結構いたのですが
「カシャ」とか「ピロリーン」とか鳴らして取ってる人たちをみてちょっと凹んだのであきらめました。

とったのは↓の一枚のみ、 うつってないけどウェンディも来てた。可愛かったー