sql >> Database teknologi >  >> RDS >> MariaDB

Konverter forespørgselsresultater til en kommasepareret liste i MariaDB

I MariaDB kan vi bruge GROUP_CONCAT() funktion for at returnere vores forespørgselsresultater som en kommasepareret liste. Med det mener jeg, for en given kolonne kan vi konvertere alle rækker til en enkelt række, der indeholder en kommasepareret liste over de værdier, der udgjorde den kolonne. Hver række er et separat element på listen.

Eksempel

Antag, at vi kører følgende forespørgsel:

SELECT meal 
FROM guest_meals;

Resultat:

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

Den forespørgsel resulterede i seks rækker.

Vi kan konvertere disse rækker til en kommasepareret række på denne måde:

SELECT GROUP_CONCAT(meal) 
FROM guest_meals;

Resultat:

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

Skift afgrænseren

Vi kan specificere vores egen separator ved at overføre den til funktionen med præfikset SEPARATOR søgeord:

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

Resultat:

Salad + Fish + Burrito + Pasta + Salad + Salad

Bestilling af resultaterne

Vi kan bestille resultaterne ved at bruge en ORDER BY klausul i funktionen:

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

Resultat:

Burrito,Fish,Pasta,Salad,Salad,Salad

Returnering kun unikke værdier

Vi kan bruge en DISTINCT klausul for kun at returnere unikke værdier:

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

Resultat:

Burrito,Fish,Pasta,Salad

Begræns resultaterne

Vi kan bruge en LIMIT klausul for at begrænse antallet af elementer på listen:

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

Resultat:

Burrito,Fish,Pasta

Grupperte forespørgsler

GROUP_CONCAT() funktion kan være praktisk, når du kører grupperede forespørgsler. Se MariaDB GROUP_CONCAT() for et eksempel.


  1. Hvorfor giver denne SQL-kode fejl 1066 (Ikke unik tabel/alias:'bruger')?

  2. Naturlig deltagelse i SQL Server

  3. MySQL rækkefølge efter bedste match

  4. Brugerkontostyring, roller, tilladelser, autentificering PHP og MySQL