我有一个表公司,其中包含company_id,company_name和其他详细信息。
我有一个表分包,其中有一个映射到company.company_id的company_id列。
如何编写选择语句以获取尚未分配给有效分包契约(Contract)的所有有效公司? IE在subcontracts.company_id中找不到company_id
******编辑*****
我相信正确的SQL是:
select company_id
from company
where company.active_status = 1
and not exists( select * from subcontracts
where subcontracts.company = company.company_id
AND subcontracts.active_status = 1
)
最佳答案
子选择在LINQ中几乎相同。
var noSubs = from company in context.Companies
where company.active_status == 1 &&
!(from subcontract in context.Subcontracts
where subcontract.active_status == 1
select subcontract.company_id).Contains(company.company_id)
select company;
Linq to SQL会将其翻译为转包表上的“不存在”。