Re: UNION?
| От | Tom Lane |
|---|---|
| Тема | Re: UNION? |
| Дата | |
| Msg-id | 3317.1043077702@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | UNION? (Forest Felling <res08i7v@verizon.net>) |
| Список | pgsql-novice |
Forest Felling <res08i7v@verizon.net> writes:
> mydb=# select count(city) as qty, code as code
> from test_year
> where length(code) = 1
> group by code
> order by code
> union all
> select count(city) as qty, 'All' as code
> from test_year
> where length(code) = 1
> ERROR: parser: parse error at or near "all"
If you want to use ORDER BY in one of the elements of a UNION (which is
not legal per standard SQL), you need to parenthesize:
(select count(city) as qty, code as code
from test_year
where length(code) = 1
group by code
order by code)
union all
(select count(city) as qty, 'All' as code
from test_year
where length(code) = 1)
The reason for this can be seen by considering this variant query:
(select count(city) as qty, 'All' as code
from test_year
where length(code) = 1)
union all
(select count(city) as qty, code as code
from test_year
where length(code) = 1
group by code
order by code)
Without the parens, it would be unclear whether you mean the ORDER BY
to apply to the second sub-SELECT, or to the result of the whole UNION.
(SQL spec would require it to be interpreted as applying to the whole
UNION result, I believe.)
regards, tom lane
В списке pgsql-novice по дате отправления: