一所懸命に手抜きする

デスクワークばかりのスポーツ嫌いで50歳も過ぎ、いよいよ足腰に衰えを感じつつある昨今。

重複する行を削除するSELECT DISTINCT

データは項目の内容が重複していることがある

 今回はSQLについてです。
 データには項目の内容が重複するものが含まれている場合があります。
 そこから重複を除いてデータを抽出したいことがあります。
 例えば、次のサンプルのように1月の仕入明細データといったときには、売れ筋商品のように何回も仕入れたものがあれば仕入明細データは重複しています。

サンプルテーブル buyList
入荷日付 商品番号  商品名 当社原価 相手原価
20170102    12345   XA-55     3500     3500
20170103   132977    RX98     2980     3280
20170103   349401 NOK0655     2500     2500
20170103   349401 NOK0655     2500     2500
20170104   227291 NOK2355     3500    35000
20170104   227291 NOK2355     3500    35000
20170104   349401 NOK0655     2500     2500
20170105  5288923  JJ2CAN     6000     6200
20170105   132977    RX98     2780     2980

 1月に仕入れた商品の一覧という時には重複を除いて商品番号や商品名を抽出すれば良いことになります。

キー項目で重複を除いたデータを取得する SELECT DISTINCT

 重複を除いてデータを取得するのが SELECT DISTINCT です。 

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

 SELECT DISTINCT の後にキー項目を指定します。そのキー項目で重複がないようにデータが抽出されます。

SELECT DISTINCT 商品番号,商品名 FROM buyList ORDER BY 商品番号;
/*          実行結果
  商品番号  商品名
1    12345   XA-55
2   132977    RX98
3   227291 NOK2355
4   349401 NOK0655
5  5288923  JJ2CAN
*/

 このように重複が除かれて抽出されます。