Re: BUG #14079: Issues with query

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: BUG #14079: Issues with query
Дата
Msg-id CAKFQuwbq44YNq8L7y0X0Y=sPHr_Vm0G+6Jvq=8uFOruJAhiZ5A@mail.gmail.com
обсуждение исходный текст
Ответ на Re: BUG #14079: Issues with query  (Hector Bejarano <hector.bejarano@gmail.com>)
Список pgsql-bugs
On Sat, Apr 9, 2016 at 6:37 AM, Hector Bejarano <hector.bejarano@gmail.com>
wrote:

> Right, this explains the how but not the why, which is really my question=
.
> For instance, there are other statements I can use with this derived colu=
mn
> like a group by:
>
> select 1 as a group by a
>
> But then if I try to use "having" then it fails just like it does with th=
e
> WHERE clause:
>
> select 1 as a group by a having a=3D1
>
> See, the thing here is I don't understand WHY it was designed this way,
> because to me it would be very useful to have the ability to use the
> derived column without having to wrap the whole thing in a derived query.
>
>
=E2=80=8BTom answered the why a long time ago:

Google: postgresql having not using alias
http://www.postgresql.org/message-id/7608.1259177709@sss.pgh.pa.us

Basically, it shouldn't work for GROUP BY but it does so we live with it.

The difference is that in GROUP BY all you are referring to is an alias
(grouping_element) while in HAVING you are using it in an expression
(condition)

http://www.postgresql.org/docs/current/static/sql-select.html#SQL-HAVING

Its not any different than the fact you can say:  "GROUP BY 1, 2" but
saying "1 =3D 'alpha'" in the HAVING clause would downright confusing.

David J.


> On Fri, Apr 8, 2016 at 4:53 PM, Phillip Couto <phillip.couto01@gmail.com>
> wrote:
>
>> The WHERE is executed before the SELECT. The value of a is not available
>> to the WHERE clause as it is assigned at the end of the query.
>>
>> To actually make your query work it would have to read:
>> select * from (select 1 as a) as b where a =3D 1
>>
>> The from provides the data that the where will operate on, the select
>> then determines what to be returned.
>>
>> On Fri, 8 Apr 2016 at 18:41 <hector.bejarano@gmail.com> wrote:
>>
>>> The following bug has been logged on the website:
>>>
>>> Bug reference:      14079
>>> Logged by:          Hector Bejarano
>>> Email address:      hector.bejarano@gmail.com
>>> PostgreSQL version: 9.5.0
>>> Operating system:   Ubuntu 14
>>> Description:
>>>
>>> This query works:
>>> select 1 as a
>>>
>>> But this one fails:
>>> select 1 as a where a =3D 1
>>>
>>> And I think they should both work.
>>>
>>> Regards,
>>> Hector.
>>>
>>>
>>> --
>>> Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
>>> To make changes to your subscription:
>>> http://www.postgresql.org/mailpref/pgsql-bugs
>>>
>>
>

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

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #14080: JSONB order changes when using json_pretty()
Следующее
От: Noah Misch
Дата:
Сообщение: Re: BUG #14028: FATAL: cannot perform encoding conversion outside a transaction