Nogle gange skal du måske kombinere flere rækker i én kolonne. Her er, hvordan du sammenkæder flere rækker i en kolonne i MySQL ved hjælp af GROUP_CONCAT-funktionen. Du kan også bruge den til at sammenkæde rækker i strenge eller få flere rækkedata i en enkelt række i MySQL.
Sådan sammenkædes flere rækker i én kolonne i MySQL
Her er trinene til at sammenkæde flere rækker i én kolonne i MySQL.
Lad os sige, at du har følgende tabelsalg(salgsrep, salg)
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 |
+-----------+------+
Bonuslæser: Sådan beregner du løbende total i MySQL
Lad os sige, at du vil rapportere alle sælgere, hvis salg>10 med følgende forespørgsel.
mysql> select sales_rep from sales where sale>10;
Du får følgende output
+-----------+ | sales_rep | +-----------+ | Bob | | Chris | | Dave | +-----------+
Vi ønsker dog, at sales_rep-navnene skal være til stede på en enkelt linje.
Bob, Chris, Dave
I dette tilfælde bruger vi GROUP_CONCAT-funktionen til at sammenkæde flere rækker i én kolonne.
mysql> select group_concat(sales_rep) from sales2 where sale>10; +-------------------------+ | group_concat(sales_rep) | +-------------------------+ | Bob,Chris,Dave | +-------------------------+
GROUP_CONCAT sammenkæder alle ikke-nullværdier i en gruppe og returnerer dem som en enkelt streng.
Hvis du vil undgå dubletter, kan du også tilføje DISTINCT i din forespørgsel. Lad os sige, at du har følgende 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 | +---------+------------+------+
I ovenstående tabel er kolonnen produkt indeholder duplikerede værdier. Så vi bruger DISTINCT søgeord til kun at vælge unikke værdier.
mysql> select group_concat(distinct product) from sales3 where sale>10; +--------------------------------+ | group_concat(distinct product) | +--------------------------------+ | A,B | +--------------------------------+
Bonuslæser: Sådan tilføjer du total række i MySQL
Du kan også bruge GROUP BY-funktionen til at sammenkæde rækkeværdier for hver gruppe. Her er et eksempel. Lad os sige, at du har følgende 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 |
+---------+-----------+
Her er en forespørgsel, hvor vi sammenkæder repnavne for hvert produkt ved hjælp af 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 sammenkædet flere rækker i én kolonne, kan du bruge et rapporteringsværktøj til at plotte resultatet i en tabel og dele dem med dit team. Her er et eksempel på en tabel oprettet ved hjælp af Ubiq.

Forresten, hvis du vil oprette diagrammer, dashboards og rapporter fra MySQL-databasen, kan du prøve Ubiq. Vi tilbyder en 14-dages gratis prøveperiode.