From: | Thomas Metz <tmetz(at)gsf(dot)de> |
---|---|
To: | pgsql-sql(at)hub(dot)org |
Subject: | SELECT DISTINCT ON ... ORDER BY ... |
Date: | 1999-01-28 13:01:03 |
Message-ID: | 36B05F8F.DFB94ED8@gsf.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
I have the following problem:
Assuming the table TEST as follows:
ID NAME
-----------------
1 Alex
2 Oliver
1 Thomas
2 Fenella
SELECT DISTINCT ON id id, name FROM test;
produces:
ID NAME
-----------------
1 Alex
2 Oliver
SELECT DISTINCT ON id, name FROM test ORDER BY name;
produces:
ID NAME
-----------------
1 Alex
2 Fenella
1 Thomas
I would have expected only two rows in both queries. I don't care which
names actually appear in the output as long as they are sorted, but
there should no longer be duplicate id's.
If the table is as follows:
ID NAME
-----------------
2 Oliver
2 Alex
1 Thomas
1 Fenella
SELECT DISTINCT ON id id, name FROM test;
produces:
ID NAME
-----------------
1 Thomas
2 Oliver
SELECT DISTINCT ON id, name FROM test ORDER BY name;
produces:
ID NAME
-----------------
2 Alex
1 Fenella
2 Oliver
1 Thomas
What seems to happen is that from the sorted table, duplicate id's are
eliminated only if they are grouped. If there is no explicit sorting I
assume the DISTINCT performs an implicit sorting on id and then
eliminates records correctly. Is that the correct behaviour? Is there
another (simple) way of getting the results I want?
I am still using version 6.3
tm
--
Thomas Metz
GSF - National Research Center for Environment and Health
Institute of Mammalian Genetics
From | Date | Subject | |
---|---|---|---|
Next Message | Sergei M. Suntsov | 1999-01-28 13:09:30 | Re: [SQL] SELECT DISTINCT ON ... ORDER BY ... |
Previous Message | Marcus Better | 1999-01-28 10:49:41 | Re: [SQL] Serial numbers |