Manchmal müssen Sie möglicherweise mehrere Zeilen in einer Spalte kombinieren. So verketten Sie mehrere Zeilen in MySQL mit der Funktion GROUP_CONCAT zu einer Spalte. Sie können es auch verwenden, um Zeilen zu Strings zu verketten oder mehrere Zeilendaten in einer einzigen Zeile in MySQL zu erhalten.
Wie man mehrere Zeilen in MySQL zu einer Spalte verkettet
Hier sind die Schritte zum Verketten mehrerer Zeilen zu einer Spalte in MySQL.
Angenommen, Sie haben die folgende Tabelle sales(sales_rep, sale)
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 | +-----------+------+
Bonuslektüre: So berechnen Sie die laufende Summe in MySQL
Angenommen, Sie möchten mit der folgenden Abfrage alle Vertriebsmitarbeiter melden, deren Verkauf>10 ist.
mysql> select sales_rep from sales where sale>10;
Sie würden die folgende Ausgabe erhalten
+-----------+ | sales_rep | +-----------+ | Bob | | Chris | | Dave | +-----------+
Wir möchten jedoch, dass die Namen der Vertriebsmitarbeiter in einer einzigen Zeile vorhanden sind.
Bob, Chris, Dave
In diesem Fall verwenden wir die GROUP_CONCAT-Funktion, um mehrere Zeilen zu einer Spalte zu verketten.
mysql> select group_concat(sales_rep) from sales2 where sale>10; +-------------------------+ | group_concat(sales_rep) | +-------------------------+ | Bob,Chris,Dave | +-------------------------+
GROUP_CONCAT verkettet alle Nicht-Null-Werte in einer Gruppe und gibt sie als einzelne Zeichenfolge zurück.
Wenn Sie Duplikate vermeiden möchten, können Sie Ihrer Abfrage auch DISTINCT hinzufügen. Angenommen, Sie haben die folgende Tabelle.
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 | +---------+------------+------+
In der obigen Tabelle die Spalte Produkt enthält doppelte Werte. Daher verwenden wir das Schlüsselwort DISTINCT, um nur eindeutige Werte auszuwählen.
mysql> select group_concat(distinct product) from sales3 where sale>10; +--------------------------------+ | group_concat(distinct product) | +--------------------------------+ | A,B | +--------------------------------+
Bonuslektüre: Wie man Gesamtzeilen in MySQL hinzufügt
Sie können auch die GROUP BY-Funktion verwenden, um Zeilenwerte für jede Gruppe zu verketten. Hier ist ein Beispiel. Angenommen, Sie haben die folgende Tabelle.
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 | +---------+-----------+
Hier ist eine Abfrage, bei der wir die Namen der Vertreter für jedes Produkt mit der GROUP BY-Klausel verketten.
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 | +---------+-------------------------+
Nachdem Sie mehrere Zeilen zu einer Spalte verkettet haben, können Sie ein Berichterstellungstool verwenden, um das Ergebnis in einer Tabelle darzustellen und mit Ihrem Team zu teilen. Hier ist ein Beispiel für eine mit Ubiq erstellte Tabelle.
Übrigens, wenn Sie Diagramme, Dashboards und Berichte aus einer MySQL-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.