繁体   English   中英

使用“ NOT IN”运算符转换子查询以与多个表联接

[英]Convert sub-query with “NOT IN” operator to join with multiple tables

我需要将以下子查询转换为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%')

好了,所以你可能不应该这样改变的加入,我会用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%'
            ) 
SELECT * 
FROM   Consultants 
WHERE  Consultants.ConsIntID 
NOT IN  (SELECT Links.ToID 
         FROM   Links 
         JOIN   Reminders  ON(Links.FromID = Reminders.RemIntID)
         WHERE  ApptSubType = 'Placed' 
                AND ToID LIKE 'CS%') 

暂无
暂无

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

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