子查询的可能性而不是使用JOIN?

时间:2009-09-05 19:39:52

标签: mysql

是否可以使用子查询编写下面的代码而不使用JOIN语句?

SELECT Nurse_no, Nurse.Name, Auxilary_No, Patient.Name
FROM Nurse LEFT OUTER JOIN Patient
ON Nurse_no = Agency_Nurse_No;

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

你可以这样做:

select
   nurse_no,
   nurse.name,
   auxiliary_no,
   (select name from patient where agency_nurse_no = nurse_no) as PatientName
from
    nurse

但是,MySQL并没有很好地优化子查询,并且连接速度可能要快得多。基准测试将告诉你哪一个获胜,但这是我的猜测。

答案 1 :(得分:2)

是的,但JOIN可能会更快。

SELECT Nurse_no, Nurse.Name, Auxilary_No, (select Name from Patient where agency_nurse_no = Nurse.Nurse_no) as PatientName
FROM Nurse;

我不是SQL专家,但我希望JOIN操作的执行速度比可能每行执行的子查询要快得多。