Quiero crear una consulta SQL (Postgres) que devuelva un objeto JSON. Las claves deben ser las entradas de una columna (por ejemplo, ID) y los valores las entradas de otra columna (por ejemplo, nombre). Mi mesa se ve así:

CREATE TABLE foods (
  id SERIAL PRIMARY KEY, 
  name VARCHAR(100)
);
INSERT INTO foods(name)
VALUES  ('Apple'),
        ('Banana'),
        ('Lemon');

Ejemplo de ejecución: https://dbfiddle.uk/?rdbms=postgres_12&b8ee3752a962a266_12&fiddle

El resultado debería tener este aspecto:

{
  "1": "Apple",
  "2": "Banana",
  "3": "Lemon"
}
2
Tom 18 oct. 2020 a las 12:49

1 respuesta

La mejor respuesta

Solo usa json[b]_object_agg():

select jsonb_object_agg(id, name) res
from foods 
2
GMB 18 oct. 2020 a las 09:50