sql >> Database >  >> RDS >> SQLite

SQLite JSON_GROUP_ARRAY()

De SQLite json_group_array() function is een aggregatiefunctie die een JSON-array retourneert die bestaat uit alle waarden in de aggregatie.

Met andere woorden, het construeert een array op basis van de waarden die door zijn argument worden geleverd.

Syntaxis

json_group_array(X)

Waar X vertegenwoordigt het/de element(en) waaruit de resulterende array zal bestaan.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren:

SELECT json_group_array( "Fritz" );

Resultaat:

["Fritz"]

We kunnen zien dat een array is geretourneerd, met de waarde die we hebben opgegeven.

De ware kracht van deze functie wordt echter gedemonstreerd in scenario's waarin geaggregeerde gegevens worden gebruikt (zoals in de onderstaande databasevoorbeelden). We hadden tenslotte gewoon de json_array() . kunnen gebruiken functie voor het bovenstaande voorbeeld:

SELECT json_array( "Fritz" );

Resultaat:

["Fritz"]

Zoals gezegd, ligt de echte kracht van deze functie in het omgaan met geaggregeerde gegevens. Daarom json_group_array() zou doorgaans worden gebruikt bij het opvragen van een database.

Databasevoorbeeld

Stel dat we de volgende tabel hebben:

SELECT * FROM Pets;

Resultaat:

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

We kunnen zien dat er drie kolommen zijn en we kunnen hun namen zien.

We kunnen de json_group_array() . gebruiken zoals dit:

SELECT json_group_array(TypeId)
FROM Pets;

Resultaat:

[3,1,2,4]

Hier heb ik een array gemaakt die bestaat uit alle TypeId waarden.

We kunnen een stap verder gaan en een andere JSON-functie als argument doorgeven aan json_group_array() .

Als we bijvoorbeeld een JSON-object willen maken voor elke rij in de database, kunnen we de json_object() gebruiken functioneren op de tafel als volgt:

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

Resultaat:

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

We kunnen dan de json_group_array() . gebruiken functie om een ​​buitenste array te leveren:

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

Resultaat:

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

Nu, alle JSON-documenten die zijn geproduceerd door json_object() zijn ingesloten in een array die is geproduceerd door json_group_array() .


  1. SQL-update met row_number()

  2. SQL Server Process Queue Race Conditie

  3. SQL-fout met Order By in subquery

  4. Hoe MySQL-client automatisch opnieuw verbinden met MySQLdb inschakelen?