2014-09-19 32 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