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
|
Список | 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 по дате отправления: