联接查询
sql server 2008支持四种表运算符----JOIN,APPLY,PIVOT,UNPIVOT.
JOIN表运算符是ANSI标准,而APPLY,PIVOT,UNPIVOT是T-SQL对标准的扩展
JOIN表运算符,联接有三种基本类型:交叉联接,内联接和外联接.
交叉联接只有一个步骤:笛卡尔积;内联接有两个步骤:笛卡尔积和过滤;外联接有三个步骤:笛卡尔积,过滤,添加外部行.
(逻辑查询处理和物理查询处理的不同!)
3.1 交叉联接 (cross join)
最简单的联接,只实现了一个逻辑查询步骤(笛卡尔积)
3.1.1 ANSI SQL-92
一般标准都是用 ANSI-SQL 92的
-- ANSI SQL-92 USE TSQLFundamentals2008; SELECT C.custid, E.empid FROM Sales.Customers AS C CROSS JOIN HR.Employees AS E;
3.1.2 ANSI SQL-89
-- ANSI SQL-89 SELECT C.custid, E.empid FROM Sales.Customers AS C, HR.Employees AS E;
3.1.3 自交叉联接
对同一个表的多个实例也可以进行联接,这种功能就是所谓的自联接,所有基本联接类型(交叉联接,内联接,以及外联接)都是支持自联接.
-- Self Cross-Join SELECT E1.empid, E1.firstname, E1.lastname, E2.empid, E2.firstname, E2.lastname FROM HR.Employees AS E1 CROSS JOIN HR.Employees AS E2; GO --在自联接中,必须为表起别名.如果不为表指定别名,联接结果中的列名就会有歧义. --自联接的笛卡尔积,与不是自联接的笛卡尔积不同!
111
时间: 2024-10-05 04:40:54