sql >> Database teknologi >  >> RDS >> Mysql

Sådan sammenkædes flere rækker i én kolonne i MySQL

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.

  1. Hvorfor skal du lære PostgreSQL?

  2. Udfør denne timers forespørgsel i PostgreSQL

  3. Opret en tabel med komprimering i SQL Server (T-SQL)

  4. Flere udvalgte udsagn i enkelt forespørgsel