小编nun*_*ins的帖子

使用 PostgreSQL 在 SQL 查询中创建一个空数组,而不是内部包含 NULL 的数组

我正在使用以下架构:

CREATE TABLE person (
  person_name VARCHAR PRIMARY KEY
);

CREATE TABLE pet (
  animal_name VARCHAR,
  person_name VARCHAR REFERENCES person(person_name),
  PRIMARY KEY (animal_name, person_name)
);
Run Code Online (Sandbox Code Playgroud)

我希望创建一个表,对于每个person_name,我都会得到一个包含该人宠物的数组。我正在使用PostgreSQL 9.3.4

我在每个表中有以下值:

PERSON_NAME
-----------
Alice
Bob
Run Code Online (Sandbox Code Playgroud)

宠物

ANIMAL_NAME | PERSON_NAME
-------------------------
Woof        | Alice
Meow        | Alice
Run Code Online (Sandbox Code Playgroud)

我希望创建下表:

PERSON_NAME | PETS
--------------------------
Alice       | {Woof, Meow}
Bob         | {}
Run Code Online (Sandbox Code Playgroud)

但是,我无法创建空数组。我得到的是以下内容:

PERSON_NAME | PETS
--------------------------
Alice       | {Woof, Meow}
Bob         | {NULL}
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的查询:

SELECT
  person.person_name,
  array_agg(pet.animal_name) AS pets
FROM
  person …
Run Code Online (Sandbox Code Playgroud)

sql arrays postgresql

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

arrays ×1

postgresql ×1

sql ×1