Re: 3 tables join update

Поиск
Список
Период
Сортировка
От rihad
Тема Re: 3 tables join update
Дата
Msg-id 46FF65EA.6050705@mail.ru
обсуждение исходный текст
Ответ на Re: 3 tables join update  (Richard Broersma Jr <rabroersma@yahoo.com>)
Ответы Re: 3 tables join update  (Alban Hertroys <a.hertroys@magproductions.nl>)
Список pgsql-general
Richard Broersma Jr wrote:
> --- rihad <rihad@mail.ru> wrote:
>> UPDATE Foo foo
>> SET foo.baz_id=baz.id
>> FROM Baz baz LEFT JOIN Bar bar ON (foo.bar_id=bar.id)
>> WHERE bar.id IS NULL;
>
> This query cannot work.  Basiclly, you are trying to set the foo.baz_id = baz.id for records in
> foo that do not yet exist.  Doing this is impossible.
>
Sorry the query failed victim of me trying to simplify it so I forgot
the foo=bar join. Here's a 2 table join suffering from the same problem:
I want the update only when bar.common_field IS NULL:

UPDATE Foo foo
SET ...
FROM LEFT JOIN Bar bar USING(common_field)
WHERE blah='blah' AND bar.common_field IS NULL;

ERROR:  syntax error at or near "JOIN"


I know I'm misusing UPDATE ... FROM because I don't really want Bar's
values to go into Foo, but only using them for a conditional update
(atomically I hope).

В списке pgsql-general по дате отправления:

Предыдущее
От: rihad
Дата:
Сообщение: Re: 3 tables join update
Следующее
От: "Phoenix Kiula"
Дата:
Сообщение: Vacuum/Analyze (suddenly) too slow