使用 PostgreSQL 和 JSONB 选择“WHERE IN”

2024-04-10

给定 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运算符@> http://www.postgresql.org/docs/9.4/static/functions-json.html#FUNCTIONS-JSONB-OP-TABLE检查每个组合,但不幸的是,我必须发出与我要检查的值数量一样多的查询。有办法做到吗在一个查询中?

UPDATE:

我立即找到了解决方案:

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

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

看起来这就是你想要的?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PostgreSQL 和 JSONB 选择“WHERE IN” 的相关文章

随机推荐