MySQLでDISTINCTを使って指定したカラムの重複した行を除外する方法を記してます。
MySQLのLEFT JOINの使い方も知っておくと捗ります!
-
【MySQL】LEFT JOINとRIGHT JOINを使って全てのデータを表示する
MySQLでLEFT(RIGHT)JOINを使って、NULL値であってもデータを取得・表示する方法のメモです。 補足 G ...
続きを見る
MySQL・DISINCTの構文
DISTINCTを使うことで、重複しているレコード(行)を除外します。
DISTINCTの構文は、SELECTの後に記述すること。
SELECT DISTINCT 列名,列名n...FROM テーブル名
DISTINCTを使って重複レコードを除外してみる
以下テーブル使って、重複レコードを除外してみます。
テーブルに挿入した値↓
INSERT INTO 部品保管(No,部品名,個数) VALUES(1,'電解コンデンサ',100);
INSERT INTO 部品保管(No,部品名,個数) VALUES(3,'チップ抵抗',1000);
INSERT INTO 部品保管(No,部品名,個数) VALUES(2,'LED',3000);
INSERT INTO 部品保管(No,部品名,個数) VALUES(1,'電解コンデンサ',200);
INSERT INTO 部品保管(No,部品名,個数) VALUES(2,'LED',250);
INSERT INTO 部品保管(No,部品名,個数) VALUES(1,'電解コンデンサ',300);
INSERT INTO 部品保管(No,部品名,個数) VALUES(1,'チップ抵抗',100);
DISTINCTを使ったSQL文の実行結果
部品名の列を指定して、重複している行を除外してみます。
実行するDISTINCのSQL文↓
SELECT DISTINCT 部品名 FROM 部品保管;
部品名の重複レコードを除外するSQLの実行結果↓
指定したカラムの重複しているレコードが除外されました。
MySQLのDISINCTを複数列で使う場合
複数列で行の値が重複している場合、除外するにはどうすればよいのか。
単純に重複値を除外したいカラムの指定を増やすだけっす。
DISINCTを複数列で使う場合の構文↓
SELECT DISTINCT 列名1,列名n...FROM テーブル名;
DISTINCTで複数列の重複値を除外してみる
さきほどのテーブルを使って、複数列にまたがった重複値を除外してみます。
DISTINCTで複数列を除外・実行結果
DISTINCで複数列の重複値を除外するSQL文↓
SELECT DISTINCT No,部品名 FROM 部品保管;
複数列の重複値を除外するDISTINCTの実行結果↓
複数列にまたがって、重複しているレコードのみ除外されました。
ちなみにこのテーブルで「個数」まで指定すると、全データ表示になるのでDISTINCTを使う意味がなくなります。
(個数の値が重複していなければ別ですが、それは登録するレコード自体が重複してる問題...) 苦笑
まとめ
MySQLのDISTINCT、スプレッドシートだとUNIQUE関数に近い処理な感じです。(UNIQUE関数は重複行だけ除外して全データ引っ張ってくれるミラクル関数)
レコードを追加しまくって重複に気づかないときでも、DISTINCTなら一発で重複レコードを除外してくれますね。
ただし、DISTINCTの実行によって表示されるカラムは指定した列名だけになってしまうのが注意ポイントでしょうか。
-
【MySQL】LEFT JOINとRIGHT JOINを使って全てのデータを表示する
MySQLでLEFT(RIGHT)JOINを使って、NULL値であってもデータを取得・表示する方法のメモです。 補足 G ...
続きを見る
関連記事:【MySQL】LEFT JOINとRIGHT JOINを使って全てのデータを表示する
関連記事:【MySQL】GROUP BYで商品ごとの合計を算出する(phpMyAdmin)
関連記事:【MySQL】リレーションを設定する方法(phpMyAdmin)