Re: sql question regarding count(*)
От | Stephan Szabo |
---|---|
Тема | Re: sql question regarding count(*) |
Дата | |
Msg-id | 20030306223558.A87666-100000@megazone23.bigpanda.com обсуждение исходный текст |
Ответ на | Re: sql question regarding count(*) (Rajesh Kumar Mallah <mallah@trade-india.com>) |
Ответы |
Re: sql question regarding count(*)
|
Список | pgsql-sql |
On Fri, 7 Mar 2003, Rajesh Kumar Mallah wrote: > On Friday 07 March 2003 11:41 am, Stephan Szabo wrote: > > On Fri, 7 Mar 2003, Rajesh Kumar Mallah wrote: > > > Tomasz did you notice the two queries are totally differet on different > > > tables? > > > > A count() on a non-grouped table returns 1 row. > > > > A grouped table returns 1 row per group. If there are no groups, no rows > > are returned. If the groups are filtered by a having clause, it might > > also return no rows. > > True the second query does not return any row. > even in first case no rows are returned. > > where is the difference? > I don't think I understand the question. select userid from users where userid=-1 returns 1 row for each row the where clause returns true and 0 rows if there are none. select count(*) from users where userid=-1 returns 1 row (it's not a grouped table) select count(*) from users where userid=-1 group by userid returns 1 row if there is at least 1 row having userid=-1or 0 rows otherwise (either there is a group or there isn't) select count(*) from users where userid=-1 group by useridhaving userid!=-1 should return 0 rows because even if there is a group it'll fail the having clause.
В списке pgsql-sql по дате отправления: