2011-05-12 39 views
8

我有一个表:PostgreSQL的:选择返回数组

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

我希望我可以运行下面的SQL:

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

我基本上是在寻找一份声明中,将返回我的数组其中第一个将是用户输入,第二个将来自表列,比如friend_id。

PostgreSQL中真的有可能吗?

请指教。

SELECT($ 1,friend_id)FROM tbl_temp的结果;

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

如果我使用PQgetvalue(PGres, 0, 0)如何将结果是这样的:{44,45} or like(44,45)

问候,
Mayank

回答

16

我想你想使用的array constructor syntax

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

感谢您的回复。我总是看到你的正确答案。我希望我可以两次投票:) – Mayank 2011-05-12 18:19:28

4

我不知道我知道你想什么...

到返回一个数组,执行此操作。

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

感谢效应初探。我实际上是在寻找类似'SELECT ARRAY [$ 1,friend_id] FROM tbl_temp WHERE id = ANY($ 2) '......从_mu得到它太短了_ – Mayank 2011-05-12 18:46:35