我试图了解在WHERE
子句中分配表别名的逻辑是什么。
下面是employee
表中常用的示例,其中Supervisor Name
是通过内部联接创建的。
表中的主键是emp_id
,外键是emp_supv
SELECT
a.emp_id AS "Emp_ID",
a.emp_name AS "Employee Name",
b.emp_id AS "Supervisor ID",
b.emp_name AS "Supervisor Name"
FROM employee a, employee b
WHERE a.emp_supv = b.emp_id
我真的不理解WHERE
条款...将别名a
分配给emp_supv
而不是emp_id
的逻辑是什么?
答案 0 :(得分:2)
就像有两张不同的牌桌。
使用其他别名
可能更容易理解SELECT
t_employee.emp_id AS "Emp_ID",
t_employee.emp_name AS "Employee Name",
t_supervisor.emp_id AS "Supervisor ID",
t_supervisor.emp_name AS "Supervisor Name"
FROM employee t_employee , employee t_supervisor
WHERE t_employee.emp_supv = t_supervisor.emp_id
您在主管表(t_supervisor)中搜索存储在员工表(t_employee)中 emp_up emp_supv 的行
答案 1 :(得分:0)
如果WHERE
声明是:
a.emp_id = b.emp_id
然后您会说主管和员工的员工ID是相同的,因此为主管和员工检索的数据将是相同的(例如,员工姓名将等于主管姓名)。
但如果你的意思是为什么它不像:
a.emp_id = b.emp_supv
然后由表a
表示的员工将成为表b
所代表的员工的主管(员工姓名实际上是员工的主管名称,其ID等于{{ 1}})