Re: join from array or cursor

From: Sam Mason <sam(at)samason(dot)me(dot)uk>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: join from array or cursor
Date: 2009-08-21 11:26:23
Message-ID: 20090821112623.GA5407@samason.me.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Thu, Aug 20, 2009 at 11:15:12PM -0400, John DeSoi wrote:
> Suppose I have an integer array (or cursor with one integer column)
> which represents primary keys of some table. Is there a simple and
> efficient way to return the rows of the table corresponding to the
> primary key values and keep them in the same order as the array (or
> cursor)?

You could do something like:

SELECT f.id
FROM foo f, (
SELECT i, myPkArray[i] AS elem
FROM generate_series(array_lower(myPkArray,1),array_upper(myPkArray,1)) i) x
WHERE f.id = x.elem
ORDER BY x.i;

It may help to wrap the generate_series call into a function so you
don't have to refer to "myPkArray" so many times.

--
Sam http://samason.me.uk/

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Daniel Verite 2009-08-21 12:04:29 Re: Generating random unique alphanumeric IDs
Previous Message David Waller 2009-08-21 11:05:55 "Number of columns exceed limit" on a hierarchy of views