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.
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? |