[英]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.