我正在使用以下架构:
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)