使用PostgreSQL和JSONB选择“ WHERE IN”

rhy*_*mes 2 postgresql json jsonb

给定table_a这样的:

 id | name
----+------
  1 | aaaa
  2 | bbbb
  3 | cccc
Run Code Online (Sandbox Code Playgroud)

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

SELECT * FROM table_a WHERE name IN ('aaaa', 'bbb');
Run Code Online (Sandbox Code Playgroud)

但是给定table_b这样的:

 id |       data
----+------------------
  1 | {"name": "aaaa"}
  2 | {"name": "bbbb"}
  3 | {"name": "cccc"}
Run Code Online (Sandbox Code Playgroud)

我如何发出查询“给我所有包含键值的值包含在此值列表中的行?”

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

更新:

我马上找到了解决方案:

select * from table_b where data #>> '{name}' IN ('aaaa', 'bbb');
Run Code Online (Sandbox Code Playgroud)

Ale*_*nor 5

SELECT * FROM table_a WHERE data->>'name' IN ('aaaa', 'bbbb')
Run Code Online (Sandbox Code Playgroud)

好像是你想要的吗?