重複したデータを除外してデータを取得する(DISTINCT)
SELECT 文を使ってデータを取得するときに、 DISTINCT を指定すると取得するカラムの値が一致しているデータは除外してデータを取得することができます。ここでは MySQL で DISTINCT を指定して重複したデータを除外してデータを取得する方法について解説します。
(Last modified: )
目次
重複したデータを除外する
DISTINCT をつけて SELECT 文を実行すると、重複したデータは除外してデータを取得することができます。使い方は次の通りです。
SELECT DISTINCT col_name1 [, col_name2 ...] FROM table_name
除外されるデータは、 SELECT 文で取得するように記述したカラムの値がすべて一致しているデータです。
なお DISTINCT とは逆に重複するデータもすべて取得する場合には ALL を指定します。
SELECT ALL col_name1 [, col_name2 ...] FROM table_name
明示的に指定しなかった場合はデータをすべて取得しますので ALL をあえて指定する必要はありません。
-- --
それでは実際に試してみます。次のようなテーブルを作成しました。
create table product (id int, name varchar(10), color varchar(10));
テーブルには次のようなデータを格納していあります。
insert into product values (1, 'Keyboard', 'Black');
insert into product values (2, 'Mouse', 'White');
insert into product values (3, 'Tablet', 'Black');
insert into product values (4, 'Mouse', 'Black');
insert into product values (5, 'Keyboard', 'Black');
insert into product values (6, 'Tablet', 'White');
insert into product values (7, 'Mouse', 'White');
このテーブルから name カラムの値を取得してみます。最初はすべてのデータを取得します。
select name from product;
次に重複したデータを除外してこのテーブルから name カラムの値を取得してみます。
select distinct name from product;
次に重複したデータを除外してデータを取得することができました。
今度は重複したデータを除外してこのテーブルから name カラムと color カラムの値を取得してみます。取得するデータは name カラムの値を記述に並べ替えをしてみます。
select distinct name, color from product order by name;
name カラムと color カラムの値の組み合わせが同じデータを除外してデータを取得することができました。このように複数のカラムの値を取得している場合は、name カラムや color カラムだけみたら重複しているデータもあります。
-- --
DISTINCT を指定して重複したデータを除外してデータを取得する方法について解説します。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。