2009-09-29 70 views
3

嗨有可能将此子查询转换为加入吗?将子查询转换为加入

SELECT staff_no 
FROM doctor 
WHERE NOT EXISTS (SELECT * 
        FROM patient 
        WHERE staff_no = consultant_no); 

回答

7
SELECT staff_no 
FROM doctor 
LEFT JOIN 
     patient 
ON  staff_no = consultant_no 
WHERE consultant_no IS NULL 

对于这是高效,consultant_no应该被索引并宣布为NOT NULL

如果不是,请选取患者中声明为NOT NULL的任何列,并将替换为WHERE子句中的此列。

请参阅本文中我的博客的三种方法比较MySQL为此查询:

3
SELECT staff_no 
    FROM doctor 
LEFT JOIN patient 
     ON staff_no = consultant_no 
    WHERE consultant_no IS NULL