连接条件的顺序将导致不同的结果

时间:2012-08-25 15:39:13

标签: sql sql-server join

select s.staff_name, s2.staff_name 'supervisor name'
from staff_relation s, staff_Relation s2
where s.staff_no = s2.supervisor

select s.staff_name, s2.staff_name 'supervisor name'
from staff_relation s, staff_Relation s2
where s.supervisor = s2.staff_no 

它们都提供不同的结果。为什么会这样?

更新:不知道是否有帮助,

Table image link  这张图片是我创建的一张小桌子。

上面是我创建的小桌子的图像。

当我完成第一个命令时,它显示Anita是Ruth的主管。哪个错了。但是当我做第二个命令时,它正确显示,露丝是安妮塔的主管。

1 个答案:

答案 0 :(得分:6)

您不仅更改了连接条件的顺序,还更改了所选表的列。结果不同,因为查询不同。

如果您在s中使用s2翻转SELECT,就像在WHERE中翻转select EMPLOYEE.staff_name, SUPERVISOR.staff_name 'supervisor name' from staff_relation EMPLOYEE, staff_Relation SUPERVISOR where EMPLOYEE.staff_no = SUPERVISOR.supervisor 一样,您将获得相同的结果。

这是你的两个查询,只有表别名改变了:

select EMPLOYEE.staff_name, SUPERVISOR.staff_name 'supervisor name'
from staff_relation EMPLOYEE, staff_Relation SUPERVISOR
where EMPLOYEE.supervisor = SUPERVISOR.staff_no 

{{1}}

了解为什么#2会给你正确的结果,但#1现在没有?