0
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 

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

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

表格图像链接 此图像是我创建的一个小表格。

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

当我执行第一个命令时,显示 Anita 是 Ruth 的主管。这是错误的。但是当我执行第二个命令时,它显示正确,Ruth 是 Anita 的主管。

4

1 回答 1

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 

看看为什么 #2 会给你正确的结果,而 #1 现在却没有?

于 2012-08-25T15:41:38.197 回答