スポンサーリンク

【SQL】DISTINCTの使い方 重複排除

記事内に広告が含まれています。

SQL(Structured Query Language)は、データベース管理システムにおいてデータを操作するための標準言語です。

その中でも、DISTINCTキーワードは、重複するレコードを排除して一意のレコードを取得するために使用されます。

本記事では、DISTINCTの基本的な使い方や具体例を通じて、その役割と効果について詳しく説明します。

スポンサーリンク

DISTINCTの基本構文

基本的な構文は以下の通りです。

SELECT DISTINCT 列名1, 列名2, ...
FROM テーブル名;

この構文は、指定した列に基づいて重複を排除し、一意のレコードを取得します。

スポンサーリンク

使用例

具体的な使用例を見てみましょう。

単一列でのDISTINCT

以下の例では、顧客テーブルから重複する都市名を排除して一意の都市名を取得します。

SELECT DISTINCT city FROM customers;

このクエリは、customersテーブルのcity列に存在する一意の都市名を返します。

複数列でのDISTINCT

複数の列を指定することもできます。その場合、指定したすべての列の組み合わせが一意であるレコードが取得されます。

SELECT DISTINCT city, state FROM customers;

このクエリは、customersテーブルからcity列とstate列の組み合わせが一意であるレコードを返します。

サブクエリでの使用

DISTINCTをサブクエリで使用することも可能です。以下の例では、サブクエリで一意の顧客IDを取得し、外部クエリでその顧客の詳細を取得します。

SELECT * FROM customers
WHERE customer_id IN (
SELECT DISTINCT customer_id
FROM orders
);

COUNT関数との組合せ

COUNTDISTINCT を組み合わせて使うことで、重複を排除した値の数をカウントすることができます。

特定のカラムの値が重複しているかどうかに関係なく、一意の値の数を取得するために DISTINCT を使用します。

基本的な構文は以下のようになります。

SELECT COUNT(DISTINCT column_name) 
FROM table_name;

複数のカラムに対して DISTINCT を適用してカウントすることも可能です。

以下の例では、column1column2 の組み合わせが一意な行の数をカウントします。

SELECT COUNT(DISTINCT column1, column2) 
FROM table_name;

COUNT(DISTINCT column_name) は、NULL 値を除外してカウントします。

例えば、employees というテーブルがあり、その中に従業員の部署を示す department_id というカラムがあるとします。

この部署IDに重複がある場合、一意の部署数をカウントするには以下のようにします。

SELECT COUNT(DISTINCT department_id) 
FROM employees;

このクエリは、department_id が重複する値を無視し、ユニークな部署IDの数をカウントします。

DISTINCTGROUP BYの違い

DISTINCTは重複を排除して一意のレコードを取得するのに対し、GROUP BYは指定した列でグループ化し、集計関数と一緒に使用されることが多いです。

以下に違いを示します。

DISTINCTの使用例

SELECT DISTINCT department FROM employees;

このクエリは、employeesテーブルから一意の部署名を取得します。

GROUP BYの使用例

SELECT department, COUNT(*) FROM employees
GROUP BY department;

このクエリは、各部署ごとに従業員の数をカウントします。

パフォーマンスの考慮

DISTINCTを使用する際は、パフォーマンスに注意する必要があります。

大規模なデータセットに対してDISTINCTを使用すると、データベースの負荷が高くなることがあります。

そのため、必要に応じてインデックスを設定するなどの最適化が求められます。

このクエリは、ordersテーブルから一意の顧客IDを取得し、その顧客の詳細をcustomersテーブルから取得します。

まとめ

DISTINCTは、重複するデータを排除して一意のレコードを取得するための関数です。COUNTとの組合せなどもできるため、様々な集計・分析で利用可能です。

スポンサーリンク
SQL
著者SNS
タイトルとURLをコピーしました