DISTINCTキーワード
SQL DISTINCTキーワードは、SELECTステートメントと一緒に使用され、すべての重複レコードを除去し、固有のレコードのみを取り出すことができる。
あるテーブルに重複レコードが複数ある場合があります。このようなレコードをフェッチする際、重複したレコードをフェッチするのではなく、ユニークなレコードのみをフェッチする方が理にかなっています。
構文
重複レコードを除去するためのDISTINCTキーワードの基本的な構文は次のとおりです。
SELECT DISTINCT column1, column2,.....columnN FROM table_name WHERE [condition]
例
次のレコードを持つCUSTOMERSテーブルで考えてみましょう
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Tamara | 32 | Ahmedabad | 2000.00 | | 2 | Toyota | 25 | Delhi | 1500.00 | | 3 | Canada | 23 | Kota | 2000.00 | | 4 | Mazda | 25 | Mumbai | 6500.00 | | 5 | Suzuki | 27 | Bhopal | 8500.00 | | 6 | Nissan | 22 | MP | 4500.00 | | 7 | kentaro | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+
まず、次のSELECTクエリが重複した給与レコードをどのように返すかを見てみましょう。
SQL> SELECT SALARY FROM CUSTOMERS ORDER BY SALARY;
salary(2000)が元のテーブルと重複したレコードの2倍になっている次の結果が生成されます。
+----------+ | SALARY | +----------+ | 1500.00 | | 2000.00 | | 2000.00 | | 4500.00 | | 6500.00 | | 8500.00 | | 10000.00 | +----------+
さて、上記のSELECTクエリでDISTINCTキーワードを使用し、その結果を見てみましょう。
SQL> SELECT DISTINCT SALARY FROM CUSTOMERS ORDER BY SALARY;
これにより、重複エントリがない場合、次の結果が生成されます。
+----------+ | SALARY | +----------+ | 1500.00 | | 2000.00 | | 4500.00 | | 6500.00 | | 8500.00 | | 10000.00 | +----------+