让我们想象一下我有以下表格:
Table: Jobs
JobID | Desc
1 | Desc1
2 | Desc2
3 | Desc3
Table: Docs
JobId | DocId | Filename
1 | 1 | File1
1 | 2 | File2
2 | 3 | File1
3 | 4 | File2
现在,我想从Jobs
表中选择desc
表格中的File1
个File2
和JobId=1
,其中Select *
from Jobs j
inner join Docs d
on j.JobId = d.jobId
where Filename = 'File1' and Filename='File2'
和Docs
位于此处File1
}。我的SQL语句应该如何?
更新:
我尝试了以下内容:
File2
这是错误的。它不返回任何内容,因为Select *
from Jobs j
inner join Docs d
on j.JobId = d.jobId
where Filename = 'File1' or Filename='File2'
中的记录中没有1
和2
的记录。
3
这是错误的。它会返回作业Jobs
,1 | Desc1
,Docs
,因为它们会填写此条件。
我需要什么:
从表格File1
:
File2
因为Validate
表中包含org.apache.commons.lang3
而另一个包含var ref = db.ref("server/saving-data/fireblog");
的记录。
答案 0 :(得分:2)
Select j.JobID , j.Desc
from Jobs j
inner join Docs d
on j.JobId = d.jobId
where Filename IN ('File1', 'File2')
GROUP BY j.JobID , j.Desc
HAVING COUNT(DISTINCT FileName) = 2
仅对那些只有这两个文件的作业使用条件聚合。
Select j.JobID , j.Desc
from Jobs j
inner join Docs d
on j.JobId = d.jobId
GROUP BY j.JobID , j.Desc
HAVING COUNT( DISTINCT CASE WHEN FileName IN ('File1', 'File2')
THEN FileName
END) = 2
AND COUNT(FileName) = 2
答案 1 :(得分:0)
Select * from DOCS inner join jobs on jobs.jobID=docs.jobID ORDER BY filename
PS我对数据库不太满意。