From: Christoph Haller <ch@rodos.fzk.de>
To: k.p.lehre@basalmed.uio.no
Cc: pgsql-sql@postgresql.org
Subject: Re: select
Date: Mon, 09 Aug 2004 16:53:41 +0200
Message-ID: <41178FF4.729EAB36@rodos.fzk.de> (raw)
References: <40FEE9C6000006B4@cpfe9.be.tisc.dk>
Knut P Lehre wrote:
> I have a table with fields:
> id A B C D E F
> where id is an int4 primary key.
> In this table there is information like:
> 1 a1 b1 xxx xxx
> 2 a1 b1 xxx xxx xxx xxx
> 3 a2 b2 xxx xxx xxx xxx
> 4 a2 b2 xxx xxx xxx xxx
> 5 a3 b3 xxx xxx xxx
> 6 a3 b3 xxx xxx xxx xxx
> 7 a3 b3 xxx xxx xxx xxx
> 8 a4 b4 xxx xxx xxx xxx
> 9 a1 b1 xxx
> 10 a3 b3 xxx
> 11 a1 b3 xxx
> where xxx represents any information.
> My problem is: I only want to select one of the records which have the same
> combination of information in fields A and B, and that should be the record
> with the lowest id. Thus, the resultset should be:
> 1 a1 b1 xxx xxx
> 3 a2 b2 xxx xxx xxx xxx
> 5 a3 b3 xxx xxx xxx
> 8 a4 b4 xxx xxx xxx xxx
> 11 a1 b3 xxx
> Importantly, I might not want the selected records listed in order of increasing
> id. They might be sorted according to the data in e.g. the C field.
>
> Suggestions/comments greatly appreciated.
>
Does this give you the result you are looking for?
SELECT * FROM (
SELECT DISTINCT ON (A,B) * FROM table ORDER BY id
) AS foo ORDER BY C ;
Regards, Christoph
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: ch@rodos.fzk.de, k.p.lehre@basalmed.uio.no
Subject: Re: select
In-Reply-To: <41178FF4.729EAB36@rodos.fzk.de>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox