返回一行中的所有数据

时间:2016-09-12 18:55:03

标签: sql database postgresql

在我的Postgresql数据库中,我有多个参考数据表。 示例:

 - Gender(id:Serial, name:varchar)
 - Sexuality(id:Serial, name:varchar)
 - Location(id:Serial,name:varchar)

要检索所有表中的所有信息,我正在执行3个单独的select语句。 示例:

 - "SELECT name from Gender;
 - "SELECT name from Sexuality;
 - "SELECT name from Location;

如何将其转换为一个调用,以便它返回如下一行:

ReferenceData(allGenders:varchar[], allSexualities:varchar[], allLocations:varchar[])

我希望能够做这样的客户端 - >

var genders = results.row[0].allGenders;
for gender in genders {
   print(gender);
}

1 个答案:

答案 0 :(得分:1)

您可以使用array_agg aggragate函数将多行的值合并为一个数组,例如

SELECT array_agg(name) FROM Gender

将所有性别作为单个数组返回。如果您想同时获得所有3个表中的所有信息,您可以这样做:

SELECT
    (SELECT array_agg(name) FROM Gender),
    (SELECT array_agg(name) FROM Sexuality),
    (SELECT array_agg(name) FROM Location);