sql >> Databasteknik >  >> RDS >> Mysql

Hur man sammanfogar flera rader i en kolumn i MySQL

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.

  1. Salesforce.com länkade servrar och sp_columns_ex

  2. 2 sätt att ta bort dubbletter av rader i MariaDB (ignorerar primärnyckel)

  3. MAX() – Hitta det maximala värdet i en kolumn i MySQL

  4. psycopg2 hur hantera TypeError:inte alla argument konverteras under strängformatering