pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
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.




view thread (11+ messages)  latest in thread

Message-ID: <200302122055.21790.nallen@freenet.co.uk>
Permalink:  ../200302122055.21790.nallen@freenet.co.uk/
Also on:    postgresql.org/message-id/200302122055.21790.nallen@freenet.co.uk

 · 

reply

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