From the docs: http://www.postgresql.org/docs/8.3/interactive/sql-update.html
"According to the standard, the column-list syntax should allow a list
of columns to be assigned from a single row-valued expression, such as
a sub-select:
UPDATE accounts SET (contact_last_name, contact_first_name) =
(SELECT last_name, first_name FROM salesmen
WHERE salesmen.id = accounts.sales_id);
This is not currently implemented — the source must be a list of
independent expressions."
Is this feature going into postgresql any day soon? :-)