查询定义:
显示所有学生和所有教师,并列出同名的人。
我想包括具有相同名字的学生和老师。
它们是否重复多次都没关系。作为每个学生,教师将分别具有唯一的学生ID,员工ID。
数据:
Student Table:
StudFirstName
David
John
员工表:
StfFirstName
David
Arnold
预期结果:大卫
我在互联网上搜索了Mysql Full Outer Join Workaround
我发现了以下两种技术。
技巧1:使用Union All:
Select Students.StudFirstName
from Students
Left Outer Join Staff
On Students.StudFirstName = Staff.StfFirstName
Union all
Select Students.StudFirstName
from Students
Right Outer Join Staff
On Students.StudFirstName = Staff.StfFirstName
where Staff.StfFirstName is null;
技术 2:使用联合:
Select Students.StudFirstName
from Students
Left Outer Join Staff
On Students.StudFirstName = Staff.StfFirstName
Union
Select Students.StudFirstName
from Students
Right Outer Join Staff
On Students.StudFirstName = Staff.StfFirstName;
技术 3:但是我通过使用查询 3 得到了预期的结果:
Select Students.StudFirstName
from Students,Staff
where Students.StudFirstName = Staff.StfFirstName;
我的问题:
如何使用技术 1 和 2 获得相同的结果?
如果它们都给出相同的结果,那么技术 1,2 和 3 之间有什么区别?什么时候应该使用哪种技术?