Maison >base de données >tutoriel mysql >Comment extraire des colonnes spécifiques sous forme de tableau d'objets JSON dans PostgreSQL ?

Comment extraire des colonnes spécifiques sous forme de tableau d'objets JSON dans PostgreSQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-14 21:57:43820parcourir

How to Extract Specific Columns as a JSON Array of Objects in PostgreSQL?

Extraire des colonnes spécifiques d'une table PostgreSQL sous forme de tableau d'objets JSON

Question :

Vous disposez d'un tableau à plusieurs colonnes et souhaitez renvoyer un tableau d'objets pour chaque ligne, avec deux colonnes regroupées selon une autre colonne. Cependant, vous rencontrerez le problème que le résultat contient une clé supplémentaire dans chaque objet. Le résultat souhaité est un tableau d’objets comportant seulement deux colonnes, regroupés par une troisième colonne.

Solution PostgreSQL 10 :

Pour PostgreSQL 10 et supérieur, vous pouvez utiliser l'opérateur - pour supprimer une seule clé (ou un tableau de clés dans PostgreSQL 10) d'un objet jsonb avant l'agrégation.

<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb(t.*) - '{id, val2}'::text[]) AS js_34
FROM   tbl t
GROUP  BY val2;</code>

Solution PostgreSQL 9.4 :

Dans PostgreSQL 9.4 et supérieur, vous pouvez utiliser jsonb_build_object() ou json_build_object() pour créer un objet JSON à partir d'une alternance de clés et de valeurs.

<code class="language-sql">SELECT val2, jsonb_agg(jsonb_build_object('val3', val3, 'val4', val4)) AS js_34
FROM   tbl
GROUP  BY val2;</code>

Solution PostgreSQL 9.3 :

Pour PostgreSQL 9.3 et supérieur, vous pouvez utiliser les expressions to_jsonb() et ROW pour créer des objets JSON. Vous pouvez également utiliser des sous-requêtes au lieu d'expressions ROW.

<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb((val3, val4))) AS js_34
FROM   tbl
GROUP  BY val2;

SELECT val2, jsonb_agg(to_jsonb((SELECT t FROM (SELECT val3, val4) t))) AS js_34
FROM   tbl
GROUP  BY val2;</code>

La solution ci-dessus renverra le résultat souhaité : un tableau d'objets avec seulement deux colonnes, regroupés par la troisième colonne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn