Re: How do you select from a table until a condition is met?

From: Nicholas Allen <nallen(at)freenet(dot)co(dot)uk>
To: Bruno Wolff III <bruno(at)wolff(dot)to>
Cc: Dmitry Tkach <dmitry(at)openratings(dot)com>, pgsql-sql(at)postgresql(dot)org
Subject: Re: How do you select from a table until a condition is met?
Date: 2003-02-12 19:55:21
Message-ID: 200302122055.21790.nallen@freenet.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

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(at)freenet(dot)co(dot)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.

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Nicholas Allen 2003-02-12 20:00:11 Re: How do you select from a table until a condition is met?
Previous Message Bruno Wolff III 2003-02-12 19:35:38 Re: How do you select from a table until a condition is met?