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

重複する値でフォーマットされるようにMySQLからデータをプルする最も効率的な方法は何ですか


これには、GROUP_CONCAT()を使用できます。まずテーブルを作成しましょう-

mysql> create table DemoTable1561
   -> (
   -> StudentName varchar(20),
   -> Title text
   -> );
Query OK, 0 rows affected (0.60 sec)

挿入コマンド-

を使用して、テーブルにいくつかのレコードを挿入します
mysql> insert into DemoTable1561 values('Adam','Learning Java');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1561 values('Bob','Learning C');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1561 values('Adam','Learning Spring and Hibernate Framework');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable1561 values('Carol','Learning MySQL from basic');
Query OK, 1 row affected (0.30 sec)

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

mysql> select * from DemoTable1561;

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

+-------------+-----------------------------------------+
| StudentName | Title                                   |
+-------------+-----------------------------------------+
| Adam        | Learning Java                           |
| Bob         | Learning C                              |
| Adam        | Learning Spring and Hibernare Framework |
| Carol       | Learning MySQL from basic               |
+-------------+-----------------------------------------+
4 rows in set (0.00 sec)

これは、MySQLからデータをプルしてフォーマットするためのクエリです-

mysql> select StudentName,group_concat(Title separator ',') as FormattedOutput from DemoTable1561
   -> group by StudentName;

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

+-------------+-------------------------------------------------------+
| StudentName | FormattedOutput                                       |
+-------------+-------------------------------------------------------+
| Adam        | Learning Java,Learning Spring and Hibernate Framework |
| Bob         | Learning C                                            |
| Carol       | Learning MySQL from basic                             |
+-------------+-------------------------------------------------------+
3 rows in set (0.00 sec)

  1. MySQLを使用して、対応する重複値のレコードを別の列に追加します

    このために、GROUP BY句とともに集計関数SUM()を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> Name varchar(20),    -> Value int    -> ); Query OK, 0 rows affected (2.08 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable va

  2. MySQLの条件が異なる同じ列の2つの値を連結します

    このために、集計関数でgroup_concat()を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1869      (      Id int,      Subject varchar(20 ),      Name varchar(20)      ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレ