1

我想编写一个 Oracle 查询,它将列出 repo1 中的所有 id、name 和文件,这些文件在 file_repo 中具有匹配的 id,但在 repo1_status 中没有找到匹配的 id

repo1
id, name    
1,  abc 
2,  def
3,  emm
4,  xdd

file_repo
id, file
1,  a.c
2,  d.c
3,  e.c
4,  x.c

repo1_status
id, status, status_desc
1,  good,   new generated
3,  good,   new generated

到目前为止,我编写了以下查询,但它不起作用。任何帮助

SELECT repo1.id, name,file
FROM repo1,file_repo,repo1_status
WHERE (repo1.id=file_repo.id and repo1.id!=repo1_status.id)
4

2 回答 2

0

你可以试试这个

 SELECT repo1.id, name,file_repo
 FROM repo1 INNER JOIN file_repo ON repo1.id = file_repo.id 
 WHERE NOT EXISTS (SELECT id FROM repo1_status WHERE repo1_status.id = repo1.id)

是关于 EXISTS 的链接

或者

SELECT repo1.id, name,file_repo
 FROM ((repo1 INNER JOIN file_repo ON repo1.id = file_repo.id)
      LEFT JOIN file_repo.id ON file_repo.id = repo1.id)
 WHERE file_repo.id is null

A left joinlike this 是一样的NOT EXISTS,它可能有更好的性能

于 2012-10-31T12:46:17.237 回答
0

尝试

 SELECT repo1.id, name,file_repo
 FROM repo1 INNER JOIN file_repo ON repo1.id = file_repo.id 
 WHERE repo1.id not in (SELECT id FROM repo1_status)
于 2012-10-31T12:54:05.347 回答