SELECT DISTINCT ON ... ORDER BY ...
От | Thomas Metz |
---|---|
Тема | SELECT DISTINCT ON ... ORDER BY ... |
Дата | |
Msg-id | 36B05F8F.DFB94ED8@gsf.de обсуждение исходный текст |
Ответы |
Re: [SQL] SELECT DISTINCT ON ... ORDER BY ...
Re: [SQL] SELECT DISTINCT ON ... ORDER BY ... |
Список | 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
В списке pgsql-sql по дате отправления: