Maison >base de données >tutoriel mysql >Comment renvoyer plusieurs colonnes de la même ligne en tant que tableau d'objets JSON dans PostgreSQL ?

Comment renvoyer plusieurs colonnes de la même ligne en tant que tableau d'objets JSON dans PostgreSQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-14 22:01:49544parcourir

How to Return Multiple Columns from the Same Row as a JSON Array of Objects in PostgreSQL?

Renvoi de plusieurs colonnes sous forme de tableau d'objets JSON dans PostgreSQL

PostgreSQL propose plusieurs approches pour interroger et formater les données sous forme de tableau d'objets JSON, regroupant les résultats par une colonne spécifique. Voici une liste des méthodes pour différentes versions de PostgreSQL.

PostgreSQL 10 et versions ultérieures

Pour supprimer des clés spécifiques de l'objet JSON agrégé, utilisez l'opérateur - avant l'agrégation. Un casting explicite vers text[] est nécessaire pour résoudre l'ambiguïté avec la fonction surchargée :

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

PostgreSQL 9.4 et versions ultérieures

Utilisez jsonb_build_object() pour construire un objet JSON à partir de paires clé-valeur :

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

PostgreSQL 9.3 et versions ultérieures

Employer to_jsonb() avec une expression ou une sous-requête ROW pour générer le tableau d'objets :

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

Alternative :

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

Ces méthodes fournissent des moyens efficaces pour récupérer et structurer des données, regrouper des valeurs et créer des tableaux JSON d'objets représentant plusieurs colonnes à partir d'une seule ligne.

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