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

如何编写SQL语句筛选关联Docs表同时含File1和File2的Job数据

解决思路与正确SQL语句

嘿,我来帮你搞定这个SQL查询问题!你之前尝试的语句里用了Filename = 'File1' and Filename='File2',这其实走不通——毕竟单条记录的Filename字段不可能同时等于两个不同的值,所以这个条件永远匹配不到任何数据。

下面给你几种可行的解决方案,都能准确筛选出同时关联File1和File2的Job:

方法一:分组统计法

先筛选出包含目标文件的记录,再按Job分组统计不同文件的数量,确保数量刚好是2(也就是两个文件都存在):

SELECT j.*
FROM Jobs j
INNER JOIN Docs d ON j.JobId = d.JobId
WHERE d.Filename IN ('File1', 'File2')
GROUP BY j.JobId, j.Desc
HAVING COUNT(DISTINCT d.Filename) = 2;

方法二:多表关联法

通过两次内连接,分别匹配File1和File2的记录,只有同时满足两个连接条件的Job才会被选中:

SELECT j.*
FROM Jobs j
INNER JOIN Docs d1 ON j.JobId = d1.JobId AND d1.Filename = 'File1'
INNER JOIN Docs d2 ON j.JobId = d2.JobId AND d2.Filename = 'File2';

方法三:EXISTS子查询法

用两个EXISTS子查询分别验证该Job是否存在File1和File2的记录,两个条件都满足才返回结果:

SELECT *
FROM Jobs j
WHERE EXISTS (
    SELECT 1 FROM Docs d 
    WHERE d.JobId = j.JobId AND d.Filename = 'File1'
)
AND EXISTS (
    SELECT 1 FROM Docs d 
    WHERE d.JobId = j.JobId AND d.Filename = 'File2'
);

这三种方法都能正确得到你想要的JobId=1的结果,你可以根据自己的习惯和数据库的性能情况选择使用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:57:14