Обсуждение: select syntax question

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

select syntax question

От
Wei Weng
Дата:
This is what is on postgresql's manual page:

http://www.postgresql.org/idocs/index.php?sql-select.html

SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]   * | expression [ AS output_name ] [, ...]   [ FROM from_item
[,...] ]   [ WHERE condition ]   [ GROUP BY expression [, ...] ]   [ HAVING condition [, ...] ]   [ { UNION | INTERSECT
|EXCEPT } [ ALL ] select ]   [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ]   [ FOR UPDATE [ OF
tablename[, ...] ] ]   [ LIMIT { count | ALL } ]   [ OFFSET start ]
 

According to this syntax, SELECT DISTINCT COUNT(ID) FROM test
should be valid while SELECT COUNT(DISTINCT ID) FROM test otherwise.

while in fact, both are valid.

Is there any difference between this two queries?

Thanks!


-- 
Wei Weng
Network Software Engineer
KenCast Inc.




Re: select syntax question

От
Bruno Wolff III
Дата:
On Fri, Nov 01, 2002 at 16:33:32 -0500, Wei Weng <wweng@kencast.com> wrote:
> This is what is on postgresql's manual page:
> 
> According to this syntax, SELECT DISTINCT COUNT(ID) FROM test
> should be valid while SELECT COUNT(DISTINCT ID) FROM test otherwise.
> 
> while in fact, both are valid.
> 
> Is there any difference between this two queries?

They mean different things.

The first will return the number of rows with non-null values for id.
Since only one row is returned it is guarenteed to be distinct so the
distinct keyword will have no effect.

The second form will return the number of distinct, non-null values for id
in the table.


Re: select syntax question

От
Bruce Momjian
Дата:
Yes, a big difference.  The first returns the distinct COUNT values, but
there is only one, of course.  The second returns the number of distinct
values in the column.

---------------------------------------------------------------------------

Wei Weng wrote:
> This is what is on postgresql's manual page:
> 
> http://www.postgresql.org/idocs/index.php?sql-select.html
> 
> SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
>     * | expression [ AS output_name ] [, ...]
>     [ FROM from_item [, ...] ]
>     [ WHERE condition ]
>     [ GROUP BY expression [, ...] ]
>     [ HAVING condition [, ...] ]
>     [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
>     [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ]
>     [ FOR UPDATE [ OF tablename [, ...] ] ]
>     [ LIMIT { count | ALL } ]
>     [ OFFSET start ]
> 
> According to this syntax, SELECT DISTINCT COUNT(ID) FROM test
> should be valid while SELECT COUNT(DISTINCT ID) FROM test otherwise.
> 
> while in fact, both are valid.
> 
> Is there any difference between this two queries?
> 
> Thanks!
> 
> 
> -- 
> Wei Weng
> Network Software Engineer
> KenCast Inc.
> 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073