OUTER APPLY 与 INNER JOIN 或 LEFT JOIN 有何不同?
时间: 2024-08-13 20:05:40 浏览: 138
SQL2005学习笔记 APPLY 运算符
`OUTER APPLY` 和 `INNER JOIN` 或 `LEFT JOIN` 是 SQL 中用于数据联接的两种不同操作,它们的主要区别在于返回结果的完整性和匹配条件。
1. **INNER JOIN**:这种联接只返回两个表中存在匹配(基于指定的键或条件)的行。换句话说,它只返回两个表中都有数据的交集部分。如果某个记录在其中一个表中没有匹配,则不会出现在结果集中。
2. **LEFT JOIN**(或 LEFT OUTER JOIN):左联接会返回所有左表中的行,即使右表中没有匹配。如果右表中没有匹配项,结果中的右列将显示 NULL 值。
3. **OUTER APPLY**:这是一种特殊类型的联接,它不像 `JOIN` 那样基于键,而是针对查询表达式执行一次,即使该表达式在另一个表中没有匹配。OUTER APPLY 只会在左表中保留一行,并且如果适用的话,提供应用表达式的值。如果表达式无解,则返回 NULL。
简而言之,主要区别在于:
- INNER JOIN 只保留匹配的行。
- LEFT JOIN 保留左表的所有行,即使没有右表的匹配。
- OUTER APPLY 主要是对单个表达式的结果进行扩展,不一定基于键关联。
阅读全文