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.