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
|
Список | 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 по дате отправления: