我有一个表公司,其中包含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会将其翻译为转包表上的“不存在”。

10-07 14:33