带有JSON列的Postgresql WHERE语句
假设Postgresql 9.3数据库中有以下posts表带有JSON列的Postgresql WHERE语句,sql,json,postgresql,Sql,Json,Postgresql,假设Postgresql 9.3数据库中有以下posts表 |id|name|properties| -------------------- 其中properties是一个JSON列 JSON的一个例子是: { "comments":[ { "user_id":1, "comment":"foo" }, { "user_id":2, "comment":"bar" }, { "oddCas
|id|name|properties|
--------------------
其中properties是一个JSON列
JSON的一个例子是:
{
"comments":[
{
"user_id":1,
"comment":"foo"
},
{
"user_id":2,
"comment":"bar"
},
{
"oddCase":2,
"thisShouldStillWork":true
}
]
}
如何使用AND或or WHERE发出SELECT语句
因此,我们可以:
选择至少有用户id 1或用户id 2或用户id n。。。他评论道。
选择至少有用户id 1、用户id 2和用户id n。。。已经评论过了。
编辑:看起来json_数组_元素和动态生成的查询可以工作。第二个问题应该可以这样做
SELECT id,
comment_user_id
FROM (
SELECT id,
(json_array_elements(properties->'comments')->>'user_id')::int AS comment_user_i
FROM post
) I
WHERE comment_user_id = any(ARRAY[1,2,3]);
什么是博士后版本?“至少”是什么意思?至少可以省略吗?似乎有些contain操作符会起作用:这对OR情况会起作用吗?使用tmp posts作为SELECT json\u array\u elements属性->'comments'det,posts id SELECT*FROM tmp JOIN posts p ON p.id=tmp.id,其中posts->>'user\u id'='1'或posts->>'user\u id'='2'