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

MySQLで重複レコードを個別の値として表示し、対応する値を個別のコンマ区切りリストとして表示しますか?


これには、GROUP_CONCAT()を使用できます。また、個別のレコードをフェッチするには、DISTINCTを使用する必要があります。まずテーブルを作成しましょう-

mysql> create table DemoTable(
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   Name varchar(40),
   Score int
);
Query OK, 0 rows affected (0.53 sec)

挿入コマンド-

を使用して、テーブルにいくつかのレコードを挿入します
mysql> insert into DemoTable(Name,Score) values('Chris',56);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable(Name,Score) values('Robert',78);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Name,Score) values('Chris',56);
Query OK, 1 row affected (0.42 sec)
mysql> insert into DemoTable(Name,Score) values('Bob',89);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(Name,Score) values('Chris',56);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable(Name,Score) values('Chris',57);
Query OK, 1 row affected (0.13 sec)

selectステートメントを使用してテーブルのすべてのレコードを表示する-

mysql> select *from DemoTable;

これにより、次の出力が生成されます。ここでは、重複する「スコア」値を持つ「名前」レコードを繰り返しています-

+----+--------+-------+
| Id | Name   | Score |
+----+--------+-------+
|  1 | Chris  |    56 |
|  2 | Robert |    78 |
|  3 | Chris  |    56 |
|  4 | Bob    |    89 |
|  5 | Chris  |    56 |
|  6 | Chris  |    57 |
+----+--------+-------+
6 rows in set (0.00 sec)

以下は、すでにGROUPBY-

を使用しているテーブルからレコードをループするためのクエリです。
mysql> select Name, group_concat(DISTINCT Score separator ',') from DemoTable group by Name;

これにより、次の出力が生成されます-

+--------+--------------------------------------------+
| Name   | group_concat(DISTINCT Score separator ',') |
+--------+--------------------------------------------+
| Bob    | 89                                         |
| Chris  | 56,57                                      |
| Robert | 78                                         |
+--------+--------------------------------------------+
3 rows in set (0.00 sec)

  1. MySQLで個別の列名を表示する

    テーブルを作成しましょう- mysql> create table DemoTable1996 (    ShippingDate datetime,    CustomerName varchar(20) ); Query OK, 0 rows affected (0.84 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1996 values('2019-12-21 10:45:00','Chris'); Query O

  2. MySQLの対応する重複IDを持つ列(浮動値)から最小値を取得します

    対応する重複IDを持つ列から最小値を取得するには、GROUP BYおよびMIN()-を使用します select min(yourColumnName) from yourTableName group by yourColumnName; 上記の構文を理解するために、テーブルを作成しましょう- mysql> create table DemoTable2005 (    Id int,    Price float ); Query OK, 0 rows affected (0.71 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコ