SQL Server自连接
自联接用于将表连接到自身(同一个表)。 它对于查询分层数据或比较同一个表中的行很有用。 自联接使用内连接或左连接子句。 由于使用自联接的查询引用同一个表,因此表别名用于为查询中的表分配不同的名称
以下是将表 T 连接到自身的语法:
上面查询语句中两次引用表 T 。表别名 t1 和 t2 用于为 T 表分配不同的名称。
staffs 表存储员工信息,如身份证,名字,姓氏和电子邮件。 它还有一个名为 manager_id 的列,用于指定直接管理者。 例如,员工 Mireya 向管理员者 Fabiola 汇报工作,因为 Mireya 的 manager_id 列中的值是 Fabiola 。
Fabiola 没有经理,因为它的 manager_id 列是一个 NULL 值。
要获取工作汇报关系,请使用自联接,如以下查询中所示:
在这个例子中,两次引用了 staffs 表:一个是员工的 e ,另一个是管理者的 m 。 连接谓词使用 e.manager_id 和 m.staff_id 列中的值匹配 employee 和 manager 关系。 由于 INNER JOIN 效应, employee 列没有 Fabiola Jackson 。 如果用 LEFT JOIN 子句替换 INNER JOIN 子句,
如以下查询所示,将获得在 employee 列中包含 Fabiola Jackson 的结果集: