2011-05-12 69 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