Determining offsets to jump to grab a group of records

Поиск
Список
Период
Сортировка
От David Lambert
Тема Determining offsets to jump to grab a group of records
Дата
Msg-id g2phj2$4k8$1@news.hub.org
обсуждение исходный текст
Ответы Re: Determining offsets to jump to grab a group of records  ("David Wilson" <david.t.wilson@gmail.com>)
Список pgsql-general
I am trying to find a way to figure out what offset I would have to use
in a SELECT with LIMIT and OFFSET clauses to get a grouping of records.
For example:

   Consider a table full of first names.  I want to be able to find the
first offset where the name is "DAVID".  (We'll say that it is the
1009th row in the resulting select) This way I could perform the following:

    SELECT name FROM nametable LIMIT 25 OFFSET 1009;

Is this possible with PostgresQL?  I have already tried the following
using a temporary sequence.

    CREATE TEMP SEQUENCE RNUM;
    SELECT newoffset FROM (SELECT nextval('RNUM') AS newoffset, X.* FROM
(SELECT name FROM nametable ORDER BY name) X) Y WHERE name='DAVID';


Unfortunately, this just returns a bunch of rows with "1,2,3,4,5"
instead of "1009,1010,1011".  It seems that the nextval('RNUM') is only
executed once the outer select is being evaluated.  Is there a way
around this?

If I execute just the inner select:

    SELECT nextval('RNUM') AS newoffset, X.* FROM (SELECT name FROM
nametable ORDER BY name) X

Then it outputs the correct numbers but doesn't filter out the records
that I need.

Does anyone know of a different way to calculate an approximate offset?
  Any help you can provide is greatly appreciated.

David Lambert

В списке pgsql-general по дате отправления:

Предыдущее
От: Adam Dear
Дата:
Сообщение: Re: Unable to dump database using pg_dump
Следующее
От: "David Wilson"
Дата:
Сообщение: Re: Determining offsets to jump to grab a group of records