2014-09-19 75 views
2

如何根據此逗號分隔的key_list中列出的key_id返回key_results?PSQL選擇逗號分隔結果加入

SELECT key_list FROM some.place where key_number=1234; 
    key_list 
---------------- 
{32,35,58,63,89} 

SELECT key_id, key_result FROM some.otherplace; 
    key_id | key_result 
-------------------------- 
32 | frisbee 
33 | duckhunt 
34 | hairplugs 
35 | sparkplugs 

回答

1

因爲你的字符串是一個有效的PostgreSQL數組文本,你可以用投用它輸入到= ANYinteger[]

SELECT o.key_id, o.key_result 
FROM some.otherplace o 
INNER JOIN some.place p ON (o.key_id = ANY (key_list::integer[])) 

真的不過......這是糟糕的架構設計 。爲什麼,請參閱this post。至少你應該存儲一個實際的數組。

處理逗號分隔值時,其他有用的工具是string_to_array,unnestregexp_split_to_table

+0

這隻能解決一半的問題。你應該把查詢放在join中。 – 2014-09-19 00:41:54

+0

@GordonLinoff同意,在正確思考之前發佈,-ENOCOFFEE – 2014-09-19 00:44:13