重複行を除外

広告
facebookボタン
googleplusボタン
twitterボタン
ダミーボタン
bloggerボタン

取得したデータの中に重複する行が含まれていた場合、重複行は除外してデータを取得することが可能です。書式は次の通りです。

SELECT DISTINCT カラム名, ... FROM テーブル名;

SELECTの後にDISTINCTを付けてデータを取得すると、取得したデータの中に重複した行が含まれていた場合にはそれを除外します。この時、除外の対象となる行は、全てのカラムの値が一致している行ではなく、SELECT文で取得したカラムの値が全て一致している行です。

具体的には次のようになります。

create table customer(id integer, name text);

select destinct name from customer;

上記のSELECT文では「name」カラムの値をだけを取得していますので、「name」カラムの値が重複するデータは除外してデータを取得します。

なおDISTINCTとは逆に重複するデータも全て取得する場合にはALLを指定します。

SELECT ALL カラム名, ... FROM テーブル名;

ただ何も指定しなかった場合は全てのデータを取得するため、ALLを明示的に指定することはほとんどありません。

サンプル

では実際に試してみます。

次のようなデータが格納されたテーブルを対象にします。

p9-1

まず「name」カラムの値だけを取得してみます。

p9-2

取得したデータには重複する行も含まれています。それではDISTINCTを付けてみます。

select distinct name from salesdata;

p9-3

重複行は除外されてデータが取得されました。

なお取得するデータが複数のカラムの値の場合、指定されたカラムの値が全て一致する行だけが除外されます。

p9-4

「dt」カラムや「name」カラムだけを見れば重複している行もありますが、「dt」カラムの値と「name」カラムの値のペアで重複している行だけが除外されています(今回の例では該当行がありません)。

( Written by T.buzz.Ikura+ )

Social Button
Facebook Page