Webサイトの運営会社で得た技術的な知識を記録していきます。 サーバー情報、Webデザイン、プログラミング、このWebサイトで利用させていただいているBlogger(ブロガー)についても公開していきます。

Oracleでグループ化したレコードから古い方を優先取得する方法

ROWID のカラム名を使えば簡単に取得可能になります。

Oracleのテーブルには、疑似列「ROWID」があるんだそうです。
この「ROWID」は、内部的に自動で作成される疑似列とのこと。
仮の列になっていて、隠れている列になっていて、通常は意図的に指定しない限り、表に出てきません。

「ROWID」は、18桁の1意な文字列になっているようです。
文字列には、データオブジェクト番号、相対ファイル番号、ブロック番号、行番号などを含んでいるとのこと。

特徴として、「ROWID」は検索が速いというメリットがあるので、覚えておけば、少し得なことがあるかもしれません。

下記の例では、type をグルーピングさせた場合
同じ type のレコードの中でも最初に挿入された方のレコードが優先されるように結果が取得できます。


グルーピングで一番古いレコード取得するSQL

SELECT
 table1.type
 ,table1.rid
FROM (
 SELECT MIN(rowid) AS rid, type
 FROM TMP_CUSTHTML_USERS
 GROUP BY type
) table1
/



以上、Oracle(オラクル)でグルーピング検索のちょっとした応用でした。


0 件のコメント:

人気記事

ラベル

ページ

このブログを検索