鉴于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');
答案 0 :(得分:5)
SELECT * FROM table_a WHERE data->>'name' IN ('aaaa', 'bbbb')
看起来像你想要的那样?