2013-02-28 8 views
0

Я читал документацию PSQL, а также беспокоился о Google - хотя я не уверен, что искать - но не выглядит, что можно создать tsvector из выбранного.PostgreSQL - используя to_tsvector с SELECT

Позвольте мне немного пояснить. У меня есть таблица пользователей, и я добавил столбец tsvector к нему под названием tsv.

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

Теперь каждый пользователь имеет много статей.

Теперь я хочу сохранить заголовок статьи как tsvector в столбце tsv. Что-то вроде этого:

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 
) 

Так, очевидно, запрос не будет работать, даже не пытаясь сделать из поискового вектора ОТБОРНЫХ. У этого есть в основном 2 "проблемы"

Большое спасибо заранее.

ответ

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 
+0

@bresc Обновлено. –

+0

да! Спасибо! – 2013-02-28 12:51:29

+0

Вы думаете, что можете помочь мне с этим? Я пробовал этот подход - https://stackoverflow.com/questions/42016382/postgres-update-to-tsvector-updating-all-rows-to-same-value – Growler

Смежные вопросы