如何向tsvector添加结果集(多个条目)?我使用postgres 8.3。 我有一个m-n关系,我希望从m侧的tsvector中的n侧的一列获得所有值。 如果我对子选择有一个限制,则此语句将起作用。但并非没有限制。
UPDATE mytable
SET mytsvector=to_tsvector('english',
coalesce(column_a, '') ||' '||
coalesce((SELECT item FROM other_table WHERE id = other_id LIMIT 1), '')
)
ERROR: more than one row returned by a subquery used as an expression
答案 0 :(得分:0)
首先,在Postgres 8.3中,我必须创建一个聚合函数,以便从select中生成一个数组。
CREATE AGGREGATE array_accum (
sfunc = array_append,
basetype = anyelement,
stype = anyarray,
initcond = '{}'
);
自8.4以来,函数array_agg()。
孔语句如下所示:
UPDATE mytable
SET mytsvector=to_tsvector('english',
coalesce(column_a, '') ||' '||
coalesce(
(SELECT array_to_string(array_accum(item), ' ')
FROM mytable m, other_table o
WHERE o.id = m.other_id AND m.id = id GROUP BY m.id), '')
)