Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak połączyć wiele wierszy w jedną kolumnę w MySQL?

Czasami może być konieczne połączenie wielu wierszy w jedną kolumnę. Oto jak połączyć wiele wierszy w jedną kolumnę w MySQL za pomocą funkcji GROUP_CONCAT. Możesz go również użyć do łączenia wierszy w ciąg lub pobierania danych z wielu wierszy w jednym wierszu w MySQL.

Jak połączyć wiele wierszy w jedną kolumnę w MySQL

Oto kroki, aby połączyć wiele wierszy w jedną kolumnę w MySQL.

Załóżmy, że masz następującą tabelę sprzedaży (przedstawiciel_sprzedaży, wyprzedaż)

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 |
+-----------+------+

Przeczytaj dodatkowe: Jak obliczyć sumę bieżącą w MySQL

Załóżmy, że chcesz zgłosić wszystkich przedstawicieli handlowych, których sprzedaż>10 za pomocą następującego zapytania.

mysql> select sales_rep from sales where sale>10;

Otrzymasz następujące dane wyjściowe

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

Chcemy jednak, aby nazwy przedstawicieli handlowych znajdowały się w jednym wierszu.

Bob, Chris, Dave

W tym przypadku używamy funkcji GROUP_CONCAT, aby połączyć wiele wierszy w jedną kolumnę.

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

GROUP_CONCAT łączy wszystkie wartości inne niż null w grupie i zwraca je jako pojedynczy ciąg.

Jeśli chcesz uniknąć duplikatów, możesz również dodać do zapytania DISTINCT. Załóżmy, że masz poniższą tabelę.

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 |
+---------+------------+------+

W powyższej tabeli kolumna produkt zawiera zduplikowane wartości. Dlatego używamy słowa kluczowego DISTINCT, aby wybrać tylko unikalne wartości.

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

Przeczytaj dodatkowe: Jak dodać sumę wierszy w MySQL

Możesz również użyć funkcji GROUP BY, aby połączyć wartości wierszy dla każdej grupy. Oto przykład. Załóżmy, że masz poniższą tabelę.

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     |
+---------+-----------+

Oto zapytanie, w którym łączymy nazwy przedstawicieli dla każdego produktu, używając klauzuli 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        |
+---------+-------------------------+

Po połączeniu wielu wierszy w jedną kolumnę możesz użyć narzędzia do raportowania, aby wykreślić wyniki w tabeli i udostępnić je swojemu zespołowi. Oto przykład tabeli utworzonej za pomocą Ubiq.

Przy okazji, jeśli chcesz tworzyć wykresy, dashboardy i raporty z bazy danych MySQL, możesz wypróbować Ubiq. Oferujemy 14-dniowy bezpłatny okres próbny.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dołącz do nas w Amsterdamie na spotkanie z OptimaData i vidaXL

  2. Wybierz ostatni wiersz w MySQL

  3. Jak uzyskać rozmiar tabeli w MySQL?

  4. Jak uzyskać liczbę dni różnicy między dwiema datami na MySQL?

  5. Zapytanie o wybór między serwerami MySQL