From: Nicholas Allen <nallen@freenet.co.uk>
To: Bruno Wolff III <bruno@wolff.to>
Cc: Dmitry Tkach <dmitry@openratings.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: How do you select from a table until a condition is met?
Date: Wed, 12 Feb 2003 20:55:21 +0100
Message-ID: <200302122055.21790.nallen@freenet.co.uk> (raw)
In-Reply-To: <20030212193538.GA29724@wolff.to>
References: <200302121910.38232.nallen@freenet.co.uk>
<200302122010.15297.nallen@freenet.co.uk>
<20030212193538.GA29724@wolff.to>
I thought of this but the problem is that there may be multiple rows with the
same value for the column I am sorting on. Eg if sorting on a surname then
there may be 100s of people with the same surname so generating a where
clause that selects up to the exact person previously selected is very
difficult.
eg where surname <= 'Jones' could return hundreds of records and probably some
records for people with the same surname but which appear after the selected
record.
I had another idea though. Do you know if it is possible to write a function
for postgresql thatwill return true until a condition is met and then for
every row after that return false? This way I could write a function that
could select up to a particular row using the where clause and calling the
function from the where claus.
I'm sure there must be a way of doing this as it is such an obvious thing to
need to do...
Thanks for the help!
On Wednesday 12 Feb 2003 8:35 pm, Bruno Wolff III wrote:
> On Wed, Feb 12, 2003 at 20:10:15 +0100,
>
> Nicholas Allen <nallen@freenet.co.uk> wrote:
> > Thanks, but I don't think thats what I want. Basically I need to get the
> > row offset of a record (ie row) in a result set returned from the
> > database. I know all the details of the row in question but when the
> > search order changes I need to know the new index the row will have.
> >
> > In other words, I was hoping I would be able to select upto a particular
> > row (not knowing its offset but knowing everything else about it) in a
> > select query.
> >
> > Ideally I could do something like SELECT count(*) UNTIL col1=value1 &&
> > col2=val2 etc....
>
> Since you are ordering the data you can use where clauses with < (and/or >)
> operators to stop counting at the desired row. For this to work the
> ordering needs to be well defined. You can tack on the primary key to your
> list of columns to order by to make the ordering well defined if it isn't
> already.
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: nallen@freenet.co.uk, bruno@wolff.to, dmitry@openratings.com
Subject: Re: How do you select from a table until a condition is met?
In-Reply-To: <200302122055.21790.nallen@freenet.co.uk>
* 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