带有JSON列的Postgresql WHERE语句

带有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

假设Postgresql 9.3数据库中有以下posts表

|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'