table Person (
ID int primary key,
Name nvarchar(30) not null,
FatherID int null,
MotherID int null
);
这个就是自引用,表本身通过外键引用同一张表,这里FatherID和MotherID都通过外键引用Person
使用自联接
表可以通过自联接与自身联接。例如,可以使用自联接查找居住在 California 的 Oakland 相同邮码区域中的作者。
由于此查询涉及 authors 表与其自身的联接,因此 authors 表以两种角色显示。若要区分这两个角色,必须在 FROM 子句中为 authors 表提供两个不同的别名(au1 和 au2)。这些别名用来限定其余查询中的列名。下面是自联接 Transact-SQL 语句示例:
USE pubs
SELECT au1.au_fname, au1.au_lname, au2.au_fname, au2.au_lname
FROM authors au1 INNER JOIN authors au2
ON au1.zip = au2.zip
WHERE au1.city = 'Oakland'
ORDER BY au1.au_fname ASC, au1.au_lname ASC