Re: WITH clause

Поиск
Список
Период
Сортировка
От Greg Stark
Тема Re: WITH clause
Дата
Msg-id 87iskkw1j3.fsf@stark.dyndns.tv
обсуждение исходный текст
Ответ на Re: WITH clause  (Hannu Krosing <hannu@tm.ee>)
Список pgsql-hackers
Hannu Krosing <hannu@tm.ee> writes:

> SELECT x.*
>   FROM x, 
>      (select match (x.foo, '([0-9]+)x([0-9]+)')
>         from x innerx
>        where innerx.pk = x.pk
>        ) as res
> HAVING y = get_match_group(res, 2)
>     OR y = get_match_group(res, 3)
> ;

Well you don't need to go fetch from the table an extra time. Presumably the
data will be cached but it's still a lot of extra work to process the data
twice.

You could just do

select *  from (       select x.*,               (select match(foo, '([0-9]+)x([0-9]+)') as res      )where y = res[2]
or y = res[3]
 



But what Hannu's saying is that the SQL Standard WITH is precisely syntactic
sugar for subqueries used like above.

It sounds like WITH is to subqueries as let is to lambda....


-- 
greg



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

Предыдущее
От: Bruno Wolff III
Дата:
Сообщение: Re: ORDER BY and DISTINCT ON
Следующее
От: Greg Stark
Дата:
Сообщение: Re: ORDER BY and DISTINCT ON