PostgreSQL - 使用带有SELECT的to_tsvector

时间:2013-02-28 12:06:02

标签: sql postgresql full-text-search tsvector

我一直在阅读PSQL文档并且还在困扰Google - 虽然我不确定要查找什么 - 但它看起来不可能从选择中创建一个tsvector。

让我解释一下。我有表用户,我在其中添加了一个名为tsv的tsvector列。

      Column       |            Type             |                     Modifiers
-------------------+-----------------------------+---------------------------------------------------
 id                | integer                     | not null default nextval('jobs_id_seq'::regclass)
 username          | character varying(255)      | not null
 tsv               | tsvector                    |

现在每个用户都有很多文章

我现在想要的是将文章标题存储为tsv列中的tsvector。像这样:

UPDATE users SET tsv = to_tsvector(
  SELECT string_agg(title) 
  FROM users INNER JOIN books 
  ON user.id = articles.user_id 
  GROUP BY user.id
)

很明显,即使没有尝试从SELECT中创建一个tsvector,查询也无法工作。它基本上有2个“问题”

非常感谢你。

1 个答案:

答案 0 :(得分:1)

UPDATE users
SET tsv = to_tsvector(s.tsv)
from
    (  
        SELECT id, string_agg(title) tsv
        FROM
            users
            INNER JOIN
            articles ON user.id = articles.user_id 
        GROUP BY user.id
    ) s
where users.id = s.id