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

PostgreSQL中如何筛选t_col所有元素都存在于f_col的行?

PostgreSQL:筛选t_col所有元素均存在于f_col中的行

我在PostgreSQL数据库中有两张带共同ID的表,每张表各包含一个varchar[]类型的列。需要返回所有t_col的元素都存在于f_col中的行(f_col可包含额外元素)。

我尝试用自连接写了以下查询,但未得到正确结果:

select *
from t1 a, t2 b
where a.id=b.id
and not (a.f_col @> b.t_col)

正确查询语句

要实现需求,直接使用数组包含操作符@>即可,不需要添加not。正确的查询如下:

select *
from t1 a
join t2 b on a.id = b.id
where a.f_col @> b.t_col;

说明

  • 操作符@>的作用是判断左侧数组是否包含右侧数组的全部元素,完全匹配你的需求:t_col的所有元素都存在于f_col中
  • 推荐使用显式的JOIN语法替代老式的逗号分隔表写法,代码可读性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:10:29