iri*_*ent 0 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
Run Code Online (Sandbox Code Playgroud)
和
select s.staff_name, s2.staff_name 'supervisor name'
from staff_relation s, staff_Relation s2
where s.supervisor = s2.staff_no
Run Code Online (Sandbox Code Playgroud)
它们都提供不同的结果.为什么会这样?
更新:不知道是否有帮助,
表图像链接 此图像是我创建的一个小表.
上面是我创建的小桌子的图像.
当我做第一个命令时,它显示Anita是Ruth的主管.哪个错了.但是当我做第二个命令时,它正确显示,露丝是安妮塔的主管.
您不仅更改了连接条件的顺序,还更改了所选表的列.结果不同,因为查询不同.
如果翻转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
Run Code Online (Sandbox Code Playgroud)
和
select EMPLOYEE.staff_name, SUPERVISOR.staff_name 'supervisor name'
from staff_relation EMPLOYEE, staff_Relation SUPERVISOR
where EMPLOYEE.supervisor = SUPERVISOR.staff_no
Run Code Online (Sandbox Code Playgroud)
看看为什么#2会给你正确的结果但#1现在没有?