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

Come concatenare più righe in una colonna in MySQL

A volte potrebbe essere necessario combinare più righe in una colonna. Ecco come concatenare più righe in una colonna in MySQL usando la funzione GROUP_CONCAT. Puoi anche usarlo per concatenare righe in stringhe o ottenere dati di più righe in una singola riga in MySQL.

Come concatenare più righe in una colonna in MySQL

Ecco i passaggi per concatenare più righe in una colonna in MySQL.

Supponiamo che tu abbia la seguente tabella vendite (vendite_rep, vendita)

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 Leggi: Come calcolare il totale parziale in MySQL

Supponiamo che tu voglia segnalare tutti i rappresentanti di vendita la cui vendita>10 con la seguente query.

mysql> select sales_rep from sales where sale>10;

Otterresti il ​​seguente output

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

Tuttavia, desideriamo che i nomi dei rappresentanti_vendite siano presenti in un'unica riga.

Bob, Chris, Dave

In questo caso, utilizziamo la funzione GROUP_CONCAT per concatenare più righe in una colonna.

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

GROUP_CONCAT concatena tutti i valori non null in un gruppo e li restituisce come una singola stringa.

Se vuoi evitare duplicati, puoi anche aggiungere DISTINCT nella tua query. Supponiamo che tu abbia la seguente tabella.

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

Nella tabella sopra, la colonna prodotto contiene valori duplicati. Quindi utilizziamo la parola chiave DISTINCT per selezionare solo valori univoci.

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

Bonus Leggi: Come aggiungere la riga totale in MySQL

È inoltre possibile utilizzare la funzione GROUP BY per concatenare i valori di riga per ogni gruppo. Ecco un esempio. Supponiamo che tu abbia la seguente tabella.

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

Ecco una query in cui concateniamo i nomi dei rappresentanti per ciascun prodotto, utilizzando la clausola 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        |
+---------+-------------------------+

Dopo aver concatenato più righe in una colonna, puoi utilizzare uno strumento di reporting per tracciare il risultato in una tabella e condividerlo con il tuo team. Ecco un esempio di una tabella creata con Ubiq.

A proposito, se vuoi creare grafici, dashboard e report dal database MySQL, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.