2011-05-12 18 views
8

Tengo una tabla como:PostgreSQL: seleccione devuelve matriz

CREATE TABLE tbl_temp (id serial, friend_id int, name varchar(32)); 

Me gustaría poder ejecutar el siguiente código SQL:

PREPARE x AS SELECT {$1,friend_id} FROM tbl_temp WHERE id = ANY($2); 
EXECUTE x(33, ARRAY[1,2,3,4]) 

, básicamente, en busca de una declaración que me va a devolver una matriz de dos entradas, la primera de las cuales será ingresada por el usuario y la segunda será desde la columna de la tabla como friend_id.

¿Es realmente posible en PostgreSQL?

Por favor, asesorar.

Los resultados de SELECT ($ 1, friend_id) FROM tbl_temp;

EXECUTE x(44); 
    row  
-------- 
(44,1) 
(44,2) 
(44,3) 
(3 rows) 

Si uso PQgetvalue(PGres, 0, 0) Cómo será el resultado el siguiente aspecto: {44,45} or like(44,45)

Saludos,
Mayank

Respuesta

16

Creo que desee utilizar los array constructor syntax:

SELECT ARRAY[$1, friend_id] FROM tbl_temp WHERE id = ANY($2) 
+0

Gracias por la respuesta. Siempre veo una respuesta correcta de ti. Ojalá pudiera votar dos veces :) – Mayank

4

no estoy seguro de entender lo que quiere ...

a devuelve una matriz, haz esto.

SELECT (44, "friend_id") FROM "tbl_temp" WHERE id = ANY(ARRAY[1,2,3,4]); 
+0

Gracias por la Reponse. De hecho, estaba buscando algo como 'SELECT ARRAY [$ 1, friend_id] FROM tbl_temp DONDE id = CUALQUIERA ($ 2) ' ... Lo obtuve de _mu es muy corto_ – Mayank

Cuestiones relacionadas