【Oracle】疑似列の利用

実際に存在しない列を「疑似列」と言い、「ROWID」はその代表的な存在です
WHERE句に「ROWID」を指定した場合、表を走査する必要がない為、最も早く検索が行われます
他にも「ROWNUM」疑似列は、SELECT結果の各行に対して振られる番号です

重複データを削除する(ROWIDの使用例)

DELETE FROM 表1 WHERE ROWID IN (SELECT MAX(ROWID) FROM 表1 GROUP BY 列1 HAVING COUNT(*) > 1);

上位レコードを取得する(ROWNUMの使用例)

下記の例は、上位5件を取得します

SELECT * FROM 表1 WHERE 条件 AND ROWNUM <= 5;

並び順の上位が必要な場合は「ORDER BY」のSELECTを副呼び出しとします

SELECT * FROM (SELECT * FROM 表1 ORDER BY 列1)
 WHERE ROWNUM <= 1;

サイトマップ

Oracle,SQL,データベース

Posted by こっぷ