我需要一个SQL函数来返回一个包含一些常规列和一些数组列的表。
CREATE OR REPLACE FUNCTION fn_get_some_properties(...)
RETURNS TABLE(
someText TEXT,
someBool BOOLEAN,
someInt INTEGER,
propID INTEGER[],
propVal TEXT[]
) AS
...
检索到的属性存储在两个表中:一个用于标量值 - someText
,someBool
,someInt
;另一个用于数组。
它们通过一些全局密钥连接。
select * from Table1 where key_column= MyGlobalKey;
select * from Table2 where key_column= MyGlobalKey;
回到我的问题。如何将第二个查询(Table2
)的结果转换为数组propID
和propVal
并返回结果。
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,
...
答案 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