PostgreSQL - 返回包含数组列的表

时间:2014-09-01 15:27:45

标签: sql postgresql stored-procedures join

我需要一个SQL函数来返回一个包含一些常规列和一些数组列的表。

CREATE OR REPLACE FUNCTION fn_get_some_properties(...)
    RETURNS TABLE(
        someText    TEXT,
        someBool    BOOLEAN,
        someInt     INTEGER,
        propID      INTEGER[],
        propVal     TEXT[]
    ) AS
...

检索到的属性存储在两个表中:一个用于标量值 - someTextsomeBoolsomeInt;另一个用于数组。 它们通过一些全局密钥连接。

select * from Table1 where key_column= MyGlobalKey;
select * from Table2 where key_column= MyGlobalKey;

回到我的问题。如何将第二个查询(Table2)的结果转换为数组propIDpropVal并返回结果。

CREATE TABLE Table1 (
    key_column      INTEGER,  -- key_column is a primary key here, hence unique
    someText        TEXT,
    someBool        BOOLEAN,
    someInt         INTEGER
    ...

CREATE TABLE Table2 (
    key_column      INTEGER,  -- key_column is not unique here
    prop_id         INTEGER,
    prop_val        TEXT,
    ...

1 个答案:

答案 0 :(得分:0)

好的,找到了办法。类似的东西:

SELECT someText, someBool, someInt 
     , array(SELECT prop_id  FROM Table2 WHERE key_column = mykey)
     , array(SELECT prop_val FROM Table2 WHERE key_column = mykey)
FROM Table1 WHERE key_column = mykey