You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PSQL中jsonb字段内数组元素匹配的Where查询语句编写问题

PostgreSQL 10 jsonb数组元素匹配查询方案

你可以用以下两种兼容PostgreSQL 10.0版本的方案实现需求,直接把语句中的X和Y替换为你实际需要匹配的键值即可:

方案1:使用jsonb_array_elements拆分数组匹配(逻辑直观,无额外索引也可运行)

SELECT DISTINCT name
FROM Name_TagsTable,
     jsonb_array_elements(tagValues -> 'tags') AS tag_element
WHERE tag_element ->> 'key' = 'X'
  AND tag_element ->> 'value' = 'Y';
  • 逻辑说明:先把tagValues里的tags数组拆成单独的jsonb元素行,再筛选同时符合key和value条件的行,最后去重返回name即可。

方案2:使用jsonb包含操作符@>(性能更优,可配合GIN索引加速查询)

SELECT name
FROM Name_TagsTable
WHERE tagValues -> 'tags' @> '[{"key": "X", "value": "Y"}]'::jsonb;
  • 逻辑说明:直接判断tags数组是否包含至少一个符合{"key":"X","value":"Y"}结构的元素,写法更简洁,若你的tagValues字段提前创建了GIN索引,该查询的执行效率会远高于方案1。

内容的提问来源于stack exchange,提问作者Tarun Annapareddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:54:04