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

如何在PostgreSQL的sval表中筛选未关联fid=903的id?

正确查询未关联fid=903的id方案

以下是几种可行的PostgreSQL查询方案,能精准筛选出从未关联过fid=903的id:

方法1:NOT EXISTS子查询

通过子查询排除所有存在fid=903关联的id:

SELECT DISTINCT id
FROM sval s1
WHERE NOT EXISTS (
    SELECT 1
    FROM sval s2
    WHERE s2.id = s1.id
      AND s2.fid = 903
);
  • 逻辑:子查询找出所有关联过903的id,外层查询返回不在这个范围内的id,DISTINCT确保每个id仅返回一次。

方法2:LEFT JOIN + 空值筛选

利用左连接特性,筛选出无法匹配fid=903关联的id:

SELECT DISTINCT s1.id
FROM sval s1
LEFT JOIN sval s2 ON s1.id = s2.id AND s2.fid = 903
WHERE s2.id IS NULL;
  • 逻辑:左连接后,未关联903的id对应的s2.id会为NULL,以此作为筛选条件。

方法3:GROUP BY + HAVING统计

分组统计每个id的fid记录,排除包含903的分组:

SELECT id
FROM sval
GROUP BY id
HAVING COUNT(CASE WHEN fid = 903 THEN 1 END) = 0;
  • 逻辑:CASE语句仅对fid=903的记录计数,结果为0说明该id没有任何903的关联记录,无需额外去重。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:14:55