将子查询转换为连接

时间:2009-09-29 12:09:16

标签: sql mysql

您可以将此子查询转换为连接吗?

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

2 个答案:

答案 0 :(得分: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的任何列,并使用consultant_no子句中的此列替换WHERE

在我的博客中查看此文章,了解在MySQL中执行此查询的三种方法的比较:

答案 1 :(得分:3)

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