Re: How do you select from a table until a condition is met? - Mailing list pgsql-sql

From Nicholas Allen
Subject Re: How do you select from a table until a condition is met?
Date
Msg-id 200302122055.21790.nallen@freenet.co.uk
Whole thread Raw
In response to Re: How do you select from a table until a condition is met?  (Bruno Wolff III <bruno@wolff.to>)
Responses Re: How do you select from a table until a condition is met?  (Bruno Wolff III <bruno@wolff.to>)
List 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@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.



pgsql-sql by date:

Previous
From: Bruno Wolff III
Date:
Subject: Re: How do you select from a table until a condition is met?
Next
From: "James C. Ousley"
Date:
Subject: PL/Pgsql trigger function issue..