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)
SELECT * FROM table_a WHERE data->>'name' IN ('aaaa', 'bbbb')
Run Code Online (Sandbox Code Playgroud)
好像是你想要的吗?
| 归档时间: |
|
| 查看次数: |
723 次 |
| 最近记录: |