SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite JSON_GROUP_ARRAY()

Das SQLite json_group_array() function ist eine Aggregatfunktion, die ein JSON-Array zurückgibt, das aus allen Werten in der Aggregation besteht.

Mit anderen Worten, es konstruiert ein Array aus den Werten seines Arguments.

Syntax

json_group_array(X)

Wobei X stellt das Element/die Elemente dar, aus denen das resultierende Array bestehen wird.

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung:

SELECT json_group_array( "Fritz" );

Ergebnis:

["Fritz"]

Wir können sehen, dass ein Array mit dem von uns bereitgestellten Wert zurückgegeben wurde.

Die wahre Leistungsfähigkeit dieser Funktion zeigt sich jedoch in Szenarien, die aggregierte Daten verwenden (wie in den folgenden Datenbankbeispielen). Schließlich hätten wir einfach das json_array() verwenden können Funktion für obiges Beispiel:

SELECT json_array( "Fritz" );

Ergebnis:

["Fritz"]

Wie bereits erwähnt, liegt die wahre Stärke dieser Funktion im Umgang mit aggregierten Daten. Daher json_group_array() würde normalerweise beim Abfragen einer Datenbank verwendet werden.

Datenbankbeispiel

Angenommen, wir haben die folgende Tabelle:

SELECT * FROM Pets;

Ergebnis:

+-------+---------+--------+
| PetId | PetName | TypeId |
+-------+---------+--------+
| 1     | Homer   | 3      |
| 2     | Yelp    | 1      |
| 3     | Fluff   | 2      |
| 4     | Brush   | 4      |
+-------+---------+--------+

Wir können sehen, dass es drei Spalten gibt, und wir können ihre Namen sehen.

Wir können das json_group_array() verwenden so:

SELECT json_group_array(TypeId)
FROM Pets;

Ergebnis:

[3,1,2,4]

Hier habe ich ein Array erstellt, das aus allen TypeId besteht Werte.

Wir können noch einen Schritt weiter gehen und eine weitere JSON-Funktion als Argument an json_group_array() übergeben .

Wenn wir zum Beispiel ein JSON-Objekt für jede Zeile in der Datenbank erzeugen wollten, könnten wir das json_object() verwenden Funktion auf der Tabelle wie folgt:

SELECT json_object( 
    'PetId', PetId, 
    'PetName', PetName,
    'TypeId', TypeId 
    )
FROM Pets;

Ergebnis:

{"PetId":1,"PetName":"Homer","TypeId":3}
{"PetId":2,"PetName":"Yelp","TypeId":1}
{"PetId":3,"PetName":"Fluff","TypeId":2}
{"PetId":4,"PetName":"Brush","TypeId":4}

Wir können dann das json_group_array() verwenden Funktion, um ein äußeres Array bereitzustellen:

SELECT json_group_array( 
        json_object(
        'PetId', PetId, 
        'PetName', PetName,
        'TypeId', TypeId 
        )
    )
FROM Pets;

Ergebnis:

[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]

Nun, alle JSON-Dokumente, die von json_object() erzeugt wurden sind in einem Array eingeschlossen, das von json_group_array() erzeugt wurde .