sql >> Databasteknik >  >> RDS >> MariaDB

Konvertera frågeresultat till en kommaseparerad lista i MariaDB

I MariaDB kan vi använda GROUP_CONCAT() funktion för att returnera våra frågeresultat som en kommaseparerad lista. Med det menar jag, för en given kolumn kan vi konvertera alla rader till en enda rad som innehåller en kommaseparerad lista över värdena som utgör den kolumnen. Varje rad är ett separat objekt i listan.

Exempel

Anta att vi kör följande fråga:

SELECT meal 
FROM guest_meals;

Resultat:

+---------+
| meal    |
+---------+
| Salad   |
| Fish    |
| Burrito |
| Pasta   |
| Salad   |
| Salad   |
+---------+
6 rows in set (0.001 sec)

Den frågan resulterade i sex rader.

Vi kan konvertera dessa rader till en kommaseparerad rad så här:

SELECT GROUP_CONCAT(meal) 
FROM guest_meals;

Resultat:

+--------------------------------------+
| GROUP_CONCAT(meal)                   |
+--------------------------------------+
| Salad,Fish,Burrito,Pasta,Salad,Salad |
+--------------------------------------+
1 row in set (0.003 sec)

Ändra avgränsaren

Vi kan specificera vår egen separator genom att skicka den till funktionen, med prefixet SEPARATOR nyckelord:

SELECT GROUP_CONCAT(meal SEPARATOR ' + ') 
FROM guest_meals;

Resultat:

Salad + Fish + Burrito + Pasta + Salad + Salad

Beställa resultaten

Vi kan beställa resultaten genom att använda en ORDER BY sats i funktionen:

SELECT GROUP_CONCAT(meal ORDER BY meal ASC) 
FROM guest_meals;

Resultat:

Burrito,Fish,Pasta,Salad,Salad,Salad

Returnera endast unika värden

Vi kan använda en DISTINCT sats för att endast returnera unika värden:

SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC) 
FROM guest_meals;

Resultat:

Burrito,Fish,Pasta,Salad

Begränsa resultaten

Vi kan använda en LIMIT klausul för att begränsa antalet objekt i listan:

SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3) 
FROM guest_meals;

Resultat:

Burrito,Fish,Pasta

Grupperade frågor

GROUP_CONCAT() funktionen kan vara praktisk när du kör grupperade frågor. Se MariaDB GROUP_CONCAT() till exempel.


  1. SQL Server-historiktabell - fylla i genom SP eller Trigger?

  2. Tillkännager repmgr 2.0RC2

  3. Hur deklarerar man variabel och använder den i samma Oracle SQL-skript?

  4. Hur man lagrar JSON-data i MySQL