简体   繁体   English

联接查询等效于Not IN子句(SQL Server 2008)

[英]Join query equivalent to Not IN clause (SQL Server 2008)

I have a query with a not in clause like this: 我有一个带有not in子句的查询,如下所示:

select * 
FROM COMPANY c 
where c.company_id not In (SELECT SenderId 
                            FROM CrossRef) 
  and c.id not in (select company_id 
                    FROM USER)

I am wondering if there is a way to re-write that query using a left join in SQL Server 2008. 我想知道是否有一种方法可以在SQL Server 2008中使用左联接重写该查询。

I tried the following one but it's not giving the correct result 我尝试了以下方法,但未给出正确的结果

select c.id, c.company_id 
from COMPANY c 
left join CrossRef cr on c.company_id != cr.senderid, COMPANY c1 
left join USER u on c1.id != u.company_id
SELECT *
FROM Company C
LEFT JOIN CrossRef R ON R.SenderID = C.CompanyID
LEFT JOIN [User] U ON U.company_id = C.id
WHERE R.SenderID IS NULL
  AND U.company_id IS NULL

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM