SQL 入門 > SELECT 文の活用(DISTINCT)
重複行の削除: DISTINCT
レコードの重複行の扱い
- 取り出したレコード(結果セット)から重複する行の削除を行うには、重複を削除するキーワード DISTINCT を使用する。
DEPT_NO の 一覧(重複行は削除) を作成する ⇒ SELECT DISTINCT
SELECT DISTINCT /* 重複行を削除するキーワード DISTINCT */
DEPT_NO
FROM USER_MASTER
ORDER BY DEPT_NO
確認 テーブル定義でのレコードの重複を削除するのではなく、取り出した項目のレコード(結果セット、リザルトセットとも呼ばれる)についての重複行を削除している。
DISTINCT の制限事項
SELECT のリストの合計バイト数が 標準のデータブロックサイズに収まる必要がある(オーバヘッド分を含む)。
DEPT_NO の種類数を取得する(※ NULLは含まない)
SELECT COUNT(DISTINCT DEPT_NO)
FROM USER_MASTER
DISTINCT と OREDER BY 併用時の制限事項
DISTINCT を SELECT 文に指定する場合には ORDER BY には SELECT リストに含まれていない項目を並び替えに使用できない。これは DISTINCT も ORDER BY も一時領域を使用してソート(して重複を削除 ※)する必要がある。異なるキーのソートを同時の実行できないということ。
(※) 最近では強力な CPU パワーと大規模メモリ志向によって結果セットの行をハッシュにして重複除去するプランになることが多いらしい。
関連事項