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

如何使用SQL筛选关联指定供应商的全部JobID数据?

可以用SQL实现该需求

当然可以通过SQL实现你要的效果,下面是几种针对你场景的常用写法(假设你的表名为job_vendors):

方法1:子查询筛选目标JobID

先找出所有关联Vendor A的JobID,再取出这些JobID对应的全部记录:

SELECT j.*
FROM job_vendors j
WHERE j.JobID IN (
    SELECT JobID
    FROM job_vendors
    WHERE Vendor = 'Vendor A'
);

方法2:窗口函数标记目标JobID

通过窗口函数统计每个JobID下是否存在Vendor A,再过滤出符合条件的记录:

SELECT JobID, Vendor
FROM (
    SELECT 
        JobID, 
        Vendor,
        -- 统计当前JobID下Vendor A的数量
        COUNT(CASE WHEN Vendor = 'Vendor A' THEN 1 END) OVER (PARTITION BY JobID) AS has_vendor_a
    FROM job_vendors
) t
-- 只要数量大于0,说明该JobID包含Vendor A
WHERE has_vendor_a > 0;

方法3:JOIN关联目标JobID

先提取关联Vendor A的唯一JobID列表,再和原表关联获取全部记录:

SELECT j.*
FROM job_vendors j
JOIN (
    SELECT DISTINCT JobID
    FROM job_vendors
    WHERE Vendor = 'Vendor A'
) a_jobs ON j.JobID = a_jobs.JobID;

这几种写法都能得到你期望的输出,具体选择哪种可以根据你的数据量和现有索引情况决定:

  • 子查询写法最直观,适合大多数简单场景;
  • 窗口函数适合需要同时处理更多分组逻辑的场景;
  • JOIN写法在数据量较大时,若JobID有索引,性能可能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:37:11