Sql 如何从另一个表中存在特定列的表中获取所有记录

Sql 如何从另一个表中存在特定列的表中获取所有记录,sql,sql-server,Sql,Sql Server,我有两张表格,比如CandidateExam和PaperDetails。每个学生都与论文相关(例如,如果在PaperDetails中有2名候选人和2篇论文,那么在CandidateXAM中将有4个条目)。我想检查所有与特定论文无关的候选人。 注意:请尝试不使用 请帮我解决问题您没有提供详细信息,但会是这样的: SELECT * FROM CandidateExam CE WHERE NOT EXISTS (SELECT * FROM PaperDetails PD WHERE CE.C

我有两张表格,比如CandidateExam和PaperDetails。每个学生都与论文相关(例如,如果在PaperDetails中有2名候选人和2篇论文,那么在CandidateXAM中将有4个条目)。我想检查所有与特定论文无关的候选人。 注意:请尝试不使用


请帮我解决问题

您没有提供详细信息,但会是这样的:

SELECT * FROM CandidateExam CE
WHERE NOT EXISTS 
    (SELECT * FROM PaperDetails PD WHERE CE.CandidateID = PD.CandidateID)

NOT EXISTS和NOT IN都不是优化的方式:(详细方式就像两个表都将paperID作为一个公共字段一般来说,搜索NOT EXISTS对性能没有好处。实际上,
NOT EXISTS
通常是最有效的方式。参见Aaron Bertrand的博客: