| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Marc Mamin <M(dot)Mamin(at)intershop(dot)de> |
| Cc: | "'Chris Mair'" <chris(at)1006(dot)org>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
| Subject: | Re: select count(*); |
| Date: | 2015-06-11 14:27:08 |
| Message-ID: | 17995.1434032828@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
Marc Mamin <M(dot)Mamin(at)intershop(dot)de> writes:
>> The * might be a bit tricky, though,
>> since 'select *;' doesn't work.
> That's the point. * has no meaning without FROM
PG regards "count(*)" as a weird spelling of "count()", ie, invoke an
aggregate that takes no arguments. It really doesn't have anything to do
with the meaning of "*" as a SELECT-list item, any more than it does with
the meaning of "*" as multiplication, say. It's just syntax that's
written like that because the SQL standard says we have to.
Another way of making the point is that SELECT without a FROM list can
be seen as implicitly selecting from a dummy table with one row and no
columns. Some other systems such as Oracle make you do that explicitly,
ie the infamous "FROM dual" hack; there's nothing in the SQL standard
saying you can omit FROM. If you suppose that that's the underlying model
then the result of "select count(*)" is completely natural.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Charles Clavadetscher | 2015-06-11 14:27:44 | Re: Prevent roles not having admin option from granting themselves to other roles |
| Previous Message | Geoff Winkless | 2015-06-11 14:20:43 | Re: select count(*); |