Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да свържете множество редове в една колона в MySQL

Понякога може да се наложи да комбинирате няколко реда в една колона. Ето как да свържете множество редове в една колона в MySQL с помощта на функцията GROUP_CONCAT. Можете също да го използвате за обединяване на редове в низ или за получаване на данни от няколко реда в един ред в MySQL.

Как да свържете множество редове в една колона в MySQL

Ето стъпките за свързване на множество редове в една колона в MySQL.

Да приемем, че имате следната таблица sales (sales_rep, sale)

mysql> create table sales(sales_rep varchar(255),sale int);

mysql> insert into sales(sales_rep, sale) 
       values('Albert',10),('Bob',23),
             ('Chris',20),('Dave',35);

mysql> select * from sales;

+-----------+------+
| sales_rep | sale |
+-----------+------+
| Albert    |   10 |
| Bob       |   23 |
| Chris     |   20 |
| Dave      |   35 |
+-----------+------+

Бонус за четене: Как да изчислите текущата обща сума в MySQL

Да приемем, че искате да докладвате всички търговски представители, чиято продажба>10 със следната заявка.

mysql> select sales_rep from sales where sale>10;

Ще получите следния изход

+-----------+
| sales_rep |
+-----------+
| Bob       |
| Chris     |
| Dave      |
+-----------+

Искаме обаче имената на sales_rep да присъстват в един ред.

Bob, Chris, Dave

В този случай използваме функцията GROUP_CONCAT, за да обединим множество редове в една колона.

mysql> select group_concat(sales_rep) from sales2 where sale>10;
+-------------------------+
| group_concat(sales_rep) |
+-------------------------+
| Bob,Chris,Dave          |
+-------------------------+

GROUP_CONCAT обединява всички ненулеви стойности в група и ги връща като един низ.

Ако искате да избегнете дублиране, можете също да добавите DISTINCT в заявката си. Да приемем, че имате следната таблица.

mysql> select * from sales3;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

В таблицата по-горе, колоната продукт съдържа дублиращи се стойности. Затова използваме DISTINCT ключова дума, за да изберем само уникални стойности.

mysql> select group_concat(distinct product) from sales3 where sale>10;
+--------------------------------+
| group_concat(distinct product) |
+--------------------------------+
| A,B                            |
+--------------------------------+

Бонус за четене: Как да добавите общ ред в MySQL

Можете също да използвате функцията GROUP BY, за да конкатенирате стойности на редове за всяка група. Ето един пример. Да приемем, че имате следната таблица.

mysql> create table sales_reps(product varchar(255),sales_rep varchar(255));

mysql> insert into sales_reps(product, sales_rep) 
       values('A','Albert'),('A','Bob'),('A','Chris'),
             ('B','Dave'),('B','Edgar'),('B','Finch');

mysql> select * from sales_reps;
+---------+-----------+
| product | sales_rep |
+---------+-----------+
| A       | Albert    |
| A       | Bob       |
| A       | Chris     |
| B       | Dave      |
| B       | Edgar     |
| B       | Finch     |
+---------+-----------+

Ето заявка, при която свързваме имената на представителите за всеки продукт, използвайки клауза GROUP BY.

mysql> select product, group_concat(sales_rep) from sales_reps group by product;
+---------+-------------------------+
| product | group_concat(sales_rep) |
+---------+-------------------------+
| A       | Albert,Bob,Chris        |
| B       | Dave,Edgar,Finch        |
+---------+-------------------------+

След като свържете няколко реда в една колона, можете да използвате инструмент за отчитане, за да начертаете резултата в таблица и да ги споделите с вашия екип. Ето пример за таблица, създадена с Ubiq.

Между другото, ако искате да създавате диаграми, табла за управление и отчети от MySQL база данни, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате MySQL 8 с Workbench на Windows 10

  2. Най-добри практики за архивиране за MySQL, MariaDB и Galera Cluster

  3. Еквивалент на varchar(max) в MySQL?

  4. Използване на PHP за изпълнение на множество MYSQL заявки

  5. SQL SELECT, за да получите първите N положителни цели числа