给定 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(使用前将#替换为@)