SQL重複削除 SQLServerのDistinctでの絞り方!

SQL重複削除 SQLServerのDistinctでの絞り方!

この記事を読むのに必要な時間は約 4 分です。

前回まではSelect文の基本的な使い方なり検索の仕方などを説明してきました。今回からは一気に内容を濃ゆくしていろいろな技術的な方法を小出しで出していきたいと思います。関数なども利用していきますのでその都度その都度覚えてください。

重複したデータを削除する。

distinct

サンプルテーブルを見てみましょう。

クイズ番組などでよくある

都道府県名の中に【】を含む県は何個ある?

みたいな問題が出たとします。もし、クイズの途中にselectしても良いなら答えは0.1秒とかで出ますね。

[speech_bubble type=”drop” subtype=”L1″ icon=”02ukiyoe/tae_R.png” name=”たえさん”]そんなんあればね[/speech_bubble]
それでは実際にやってみたいと思います。

/****** SSMS の SelectTopNRows コマンドのスクリプト  ******/
SELECT TOP (1000) [漢字都道府県名]
      ,[漢字市区町村名]
      ,[num]
  FROM [test001].[dbo].[shicyouson]
  where [漢字都道府県名] like '%山%'

お!市町村の名前があるため、思った以上に出てしまいましたね。

折角なので、都道府県だけの状態にしたいと思います。

単純に [漢字市区町村名] と[num]を表示しなければ良いだけなのですが中のデータとしては存在しているため、実際に実行してみると以下のようになってしまいます。

 

/****** SSMS の SelectTopNRows コマンドのスクリプト  ******/
SELECT TOP (1000) [漢字都道府県名]
  FROM [test001].[dbo].[shicyouson]
  where [漢字都道府県名] like '%山%'

残念な結果ですね。

この様に重複したデータが存在しる場合、このデータを消すためには select の後ろに

distinct

をつけて実行してみます。

/****** SSMS の SelectTopNRows コマンドのスクリプト  ******/
SELECT distinct TOP (1000) [漢字都道府県名]
  FROM [test001].[dbo].[shicyouson]
  where [漢字都道府県名] like '%山%'

 

ほら!この通り非常に見やすいデータができました。

クイズ番組なら大きな声で言ってください。

正解は 6 です

・・・・・・はい。クイズ番組じゃないですもんね。

むやみにdistinctを使ってはいけません。重複を削除するということは、重複したデータが明らかに要らない事が明確に判明している時だけです。消してよいのか駄目なのか判断がつかないうちはdistinctをむやみに使わないようにしましょう。

 

 

 

 

タイトルとURLをコピーしました