Обсуждение: With Update From ... vs. Update ... From (With)

Поиск
Список
Период
Сортировка

With Update From ... vs. Update ... From (With)

От
"David G. Johnston"
Дата:
Hello!

Is there any non-functional difference between these two forms of Update?

WITH name AS ( SELECT )
UPDATE tbl SET ...
FROM name
WHERE tbl.id = name.id

and

UPDATE tbl SET ...
FROM ( WITH qry AS ( SELECT ) SELECT * FROM qry ) AS name
WHERE tbl.id = name.id

They both better give the same results but does the backend treat them differently?

Does the answer to my question depend on the version of PostgreSQL?

Thanks!

David J.

Re: With Update From ... vs. Update ... From (With)

От
Jim Nasby
Дата:
On 4/13/15 8:12 PM, David G. Johnston wrote:
> Hello!
>
> Is there any non-functional difference between these two forms of Update?
>
> WITH name AS ( SELECT )
> UPDATE tbl SET ...
> FROM name
> WHERE tbl.id <http://tbl.id> = name.id <http://name.id>
>
> and
>
> UPDATE tbl SET ...
> FROM ( WITH qry AS ( SELECT ) SELECT * FROM qry ) AS name
> WHERE tbl.id <http://tbl.id> = name.id <http://name.id>
>
> They both better give the same results but does the backend treat them
> differently?
>
> Does the answer to my question depend on the version of PostgreSQL?

Well, they're both ugly... but see what EXPLAIN or EXPLAIN VERBOSE shows.
--
Jim Nasby, Data Architect, Blue Treble Consulting
Data in Trouble? Get it in Treble! http://BlueTreble.com