使用"NOT IN"运算符转换子查询以与多个表连接

Ram*_*dhi 1 sql sql-server join subquery

我需要将以下子查询转换为JOIN.这里我在内部查询中已经有了JOIN运算符.请帮忙.

SELECT * 
FROM   Consultants 
WHERE  Consultants.ConsIntID 
NOT IN  (SELECT Links.ToID 
         FROM   Links JOIN Reminders 
         ON Links.FromID = Reminders.RemIntID 
            AND ApptSubType = 'Placed' 
            AND ToID LIKE 'CS%') 

Zan*_*ane 6

好吧所以你可能不应该把它改成一个联接我会用NOT EXISTS这样做的理由在这里说明

我还替换了您的古老连接语法并添加了别名以清除它.下面显示的方法已经被接受了大约22年的标准,并且是编写查询的首选方法.

SELECT C.* 
FROM   Consultants  as C -- aliases are very useful for clarity
WHERE  
NOT EXISTS (
        SELECT 1
         FROM   Links as L 
         INNER JOIN Reminders  as R --New join syntax
            ON  L.FromID = R.RemIntID 
         WHERE C.ConsIntID = L.ToID 
         AND ApptSubType = 'Placed' 
         AND ToID LIKE 'CS%'
            ) 
Run Code Online (Sandbox Code Playgroud)