SQL自联接
示例
一个表可以连接到自身,而不同的行在某种条件下彼此匹配。在这种情况下,必须使用别名以区分表的两次出现。
在下面的示例中,对于示例数据库“雇员”表中的每个“雇员”,将返回一条记录,其中包含该雇员的名字以及该雇员的经理的相应名字。由于经理也是员工,因此该表将自身结合在一起:
SELECT
e.FNameAS "Employee",
m.FNameAS "Manager"
FROM
Employees e
JOIN
Employees m
ONe.ManagerId= m.Id该查询将返回以下数据:
那么这是如何工作的呢?
原始表包含以下记录:
第一步是为FROM子句中使用的表中的所有记录创建笛卡尔乘积。在这种情况下,它是雇员表两次,因此中间表将如下所示(我删除了此示例中未使用的任何字段):
下一步是仅保留满足JOIN条件的记录,因此任何别e名表ManagerId等于别m名表的记录Id:
然后,对SELECT子句中使用的每个表达式求值以返回该表:
最后,用AS运算符分配的列名e.FName和m.FName被其别名列名替换:
热门推荐
10 朋友新年祝福语大全 简短
11 新年祝福语简短大方兔年
12 搬新家礼物祝福语简短
13 同学见面花束祝福语简短
14 五一假期祝福语幽默简短
15 离职欢送敬酒祝福语简短
16 对学弟的祝福语简短
17 考老师辞职祝福语简短
18 祝福语驱散霉运的话简短