【MySQL】重複データを省いた状態でデータを抽出する方法

MySQL

重複しているデータを省いた状態でデータを取得する場合、DISTINCTGROUP BY を使用する方法が有効です。以下に、複数カラムを基準に重複を排除する具体的な方法を紹介します。

方法1: DISTINCT を使用

複数のカラムを基準に重複を排除するためには、DISTINCT を使用してクエリを実行します。

SELECT DISTINCT column1, column2, column3
FROM your_table;
  • column1, column2, column3 は重複の基準にする列です。

方法2: GROUP BY を使用

GROUP BY を使って、複数のカラムを基準に重複を省いてデータを取得します。

SELECT column1, column2, column3, COUNT(*)
FROM your_table
GROUP BY column1, column2, column3;
  • column1, column2, column3 によってグループ化され、各グループの重複が省かれた状態になります。

方法3: ROW_NUMBER() を使用 (MySQL 8.0以降)

ROW_NUMBER() を使用して、複数カラムを基準に最初の重複を除いた行のみを取得します。

WITH UniqueData AS (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY column1, column2, column3 ORDER BY id) AS RowNum
    FROM your_table
)
SELECT *
FROM UniqueData
WHERE RowNum = 1;
  • column1, column2, column3 は重複をチェックする列で、id は並び順を決定する列です。

実行結果

  • DISTINCT を使うと、重複する組み合わせが省かれた結果がそのまま取得されます。
  • GROUP BY は、重複を省いた上でグループ化された結果を出力します。
  • ROW_NUMBER() は、複数カラムを基準に重複のない行を保持し、重複行は排除されます。

用途や目的に応じて、最適な方法を選んで使用してください。

著者プロフィール
この記事を書いた人
ロジャー

Webアプリ開発を20年近く経験し、管理職なった今も時々ソースをいじるメインは営業職の管理者。もうすぐ40代。最近は、AIを活用して少しでも仕事やプライベートを面白くしていきたいと考えているおっさんです。困った事もAIなら解決してくれるはず!?

ロジャーをフォローする
MySQLシステム開発
ロジャーをフォローする
タイトルとURLをコピーしました