Ibland kan du behöva kombinera flera rader i en kolumn. Så här sammanfogar du flera rader i en kolumn i MySQL med GROUP_CONCAT-funktionen. Du kan också använda den för att sammanfoga rader till strängar, eller få flera raddata i en enda rad i MySQL.
Hur man sammanfogar flera rader i en kolumn i MySQL
Här är stegen för att sammanfoga flera rader i en kolumn i MySQL.
Låt oss säga att du har följande tabellförsäljning(försäljningsrep, rea)
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 |
+-----------+------+
Bonus Läs: Hur man beräknar löpande totalsumma i MySQL
Låt oss säga att du vill rapportera alla säljare vars rea>10 med följande fråga.
mysql> select sales_rep from sales where sale>10;
Du skulle få följande utdata
+-----------+ | sales_rep | +-----------+ | Bob | | Chris | | Dave | +-----------+
Vi vill dock att försäljningsrepresentantens namn ska finnas på en enda rad.
Bob, Chris, Dave
I det här fallet använder vi GROUP_CONCAT-funktionen för att sammanfoga flera rader i en kolumn.
mysql> select group_concat(sales_rep) from sales2 where sale>10; +-------------------------+ | group_concat(sales_rep) | +-------------------------+ | Bob,Chris,Dave | +-------------------------+
GROUP_CONCAT sammanfogar alla icke-nullvärden i en grupp och returnerar dem som en enda sträng.
Om du vill undvika dubbletter kan du också lägga till DISTINCT i din fråga. Låt oss säga att du har följande tabell.
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 | +---------+------------+------+
I tabellen ovan, kolumnen produkt innehåller dubbletter av värden. Så vi använder DISTINCT nyckelord för att bara välja unika värden.
mysql> select group_concat(distinct product) from sales3 where sale>10; +--------------------------------+ | group_concat(distinct product) | +--------------------------------+ | A,B | +--------------------------------+
Bonusläs: Hur man lägger till total rad i MySQL
Du kan också använda GROUP BY-funktionen för att sammanfoga radvärden för varje grupp. Här är ett exempel. Låt oss säga att du har följande tabell.
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 |
+---------+-----------+
Här är en fråga där vi sammanfogar representationsnamn för varje produkt med hjälp av GROUP BY-klausul.
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 | +---------+-------------------------+
När du har sammanfogat flera rader i en kolumn kan du använda ett rapportverktyg för att plotta resultatet i en tabell och dela dem med ditt team. Här är ett exempel på en tabell skapad med Ubiq.

Förresten, om du vill skapa diagram, instrumentpaneler &rapporter från MySQL-databasen kan du prova Ubiq. Vi erbjuder en 14-dagars gratis provperiod.