MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで重複レコードのデータを並べ替える方法|ORDER BY句の使い方

MySQLで重複しているレコードのデータを並べ替えるには、ORDER BY句を使用します。本記事では、サンプルテーブルを作成し、同じ名前が重複するレコードの中から特定のデータを抽出して降順に並べ替える手順を、実際のSQL実行例とともにわかりやすく解説します。

サンプルテーブルの作成

まず、テーブルを作成しましょう。

mysql> create table DemoTable788 (
   FirstName varchar(100),
   Score int
);
Query OK, 0 rows affected (1.89 sec)

レコードの挿入

次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。意図的に「Chris」と「Robert」という名前を重複させて登録しています。

mysql> insert into DemoTable788 values('Chris',78);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable788 values('Robert',67);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable788 values('Chris',98);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable788 values('Chris',56);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable788 values('Robert',43);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable788 values('Robert',97);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable788 values('Chris',79);
Query OK, 1 row affected (0.12 sec)

テーブル内の全レコードを確認する

SELECT文でテーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable788;

実行すると、次のような出力が得られます。

+-----------+-------+
| FirstName | Score |
+-----------+-------+
| Chris     | 78    |
| Robert    | 67    |
| Chris     | 98    |
| Chris     | 56    |
| Robert    | 43    |
| Robert    | 97    |
| Chris     | 79    |
+-----------+-------+
7 rows in set (0.00 sec)

このように、「Chris」や「Robert」など同じ名前のレコードが複数登録されている状態です。

重複レコードのデータを並べ替えるクエリ

以下は、重複するレコードのデータを並べ替えるためのクエリです。ここでは、重複している名前「Chris」のレコードに絞り込み、Score列を降順(DESC)で並べ替えています。

mysql> select Score from DemoTable788 where FirstName='Chris' order by Score DESC;

実行結果は次のとおりです。

+-------+
| Score |
+-------+
| 98    |
| 79    |
| 78    |
| 56    |
+-------+
4 rows in set (0.00 sec)

「Chris」の4件のスコアが、大きい順(98 → 79 → 78 → 56)に正しく並べ替えられていることが確認できます。

ポイントまとめ

重複レコードのデータを並べ替える際のポイントは以下の2点です。

  • WHERE句で絞り込み: WHERE FirstName='Chris' のように条件を指定することで、重複する値の中から目的のレコードだけを抽出できます。
  • ORDER BY句で並べ替え: ORDER BY Score DESC を組み合わせることで、抽出したデータを降順にソートできます。

なお、昇順(小さい順)に並べ替えたい場合は、DESC を外すか、明示的に ASC を指定してください。WHEREORDER BY を組み合わせるテクニックは、ランキング表示や集計処理など、実務でも頻繁に使われる基本的な操作なので、ぜひマスターしておきましょう。

  1. MySQLで重複レコードを効率的に置き換える方法|INSERT ON DUPLICATE KEY UPDATEの使い方を解説

    MySQLで重複レコードを置き換えつつ、挿入時のエラーを回避したい場合は、INSERT ... ON DUPLICATE KEY UPDATE構文を使用するのが最も効率的な方法です。この構文を使えば、一意(UNIQUE)制約に違反するデータを挿入しようとした際に、エラーを発生させる代わりに既存のレコードを自動的に更新できます。1. サンプルテーブルの作成まず、IdとNameの2列に複合ユニーク制約を設定したテーブルを作成します。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(2

  2. MySQLで特定の重複レコードのみを抽出して表示する方法

    MySQLのテーブルに同じ値が重複して登録されている場合、その中から特定の値を持つ重複レコードだけを取り出したいことがあります。そんなときに便利なのが LIKE 演算子です。基本構文特定の重複レコードのみを表示するには、以下のように LIKE 演算子を使います。SELECT * FROM テーブル名 WHERE カラム名 LIKE 検索したい値;サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Name varchar(20) -> ); Query OK