かなめのロジック

フリーSEの雑記ブログ。ORACLEやPostgreSQL、情報セキュリティ、金融について主に書いています。

DISTINCT、重複行の削除して抽出&種類数の抽出

time 2017/11/05

DISTINCT、重複行の削除して抽出&種類数の抽出

検索結果に重複が含まれている場合に、重複行を削除する時に使用するDISTINCT、本記事ではその使用例や、少し変わった使い方である種類数の抽出を紹介します。

※当ページにおいて、検索結果イメージのNULLは【NULL】と表現しています。

sponsored link

DISTINCTの概要および使用例

SELECT文において、SELECTとカラム指定の間にDISTINCTと記述することで、重複行を削除してデータを抽出することができます。NULLも正しく行えます。

また、全カラム抽出する場合でも使用できます。

エラーになるケース

DISTINCTを使用して抽出項目に指定していないカラムをソート(ORDER BY句)に指定するとエラー(ORA-01791)になります。

種類数の抽出

DISTINCTの基本を押さえたところで、一つ少し変わった使い方を紹介します。

COUNTと併用することで種類数を抽出することができます。ただし、注意点としては、NULLは種類の一つとしてカウントしてくれない点です。

複数カラムの組み合わせでの種類数を抽出することも、文字列の結合【||】を使用することで可能です。
ただし、やはり全てのカラムでNULLの場合にカウントしてくれない点と、結合したら同じ文字列になるケース(例えば、A||BC と AB||C は同じ)は1としてカウントされる点に注意が必要です。

sponsored link

管理人

かなめ

フリーの業務系システムエンジニア。情報処理安全確保支援士。 ORACLEと金融と子育ての狭間で、元気に楽しくやってます。 [詳細]

管理人twitter

ブログ村



sponsored link