选择" WHERE IN"使用PostgreSQL和JSONB

时间:2015-09-10 21:47:03

标签: json postgresql jsonb

鉴于table_a是这样的:

 id | name
----+------
  1 | aaaa
  2 | bbbb
  3 | cccc

我显然可以发出以下查询:

SELECT * FROM table_a WHERE name IN ('aaaa', 'bbb');

但是给了table_b这样:

 id |       data
----+------------------
  1 | {"name": "aaaa"}
  2 | {"name": "bbbb"}
  3 | {"name": "cccc"}

如何发出查询"给我这个值列表中包含键名值的所有行?"

我知道我可以使用jsonb operator @>来检查每个组合,但不幸的是,我必须发出与我要检查的值的数量一样多的查询。有没有办法在一个查询中

更新

我马上找到了解决方案:

select * from table_b where data #>> '{name}' IN ('aaaa', 'bbb');

1 个答案:

答案 0 :(得分:5)

SELECT * FROM table_a WHERE data->>'name' IN ('aaaa', 'bbbb')

看起来像你想要的那样?