指定从其中检索行的表。需要 FROM 子句,除非选择列表只包含常量、变量和算术表达式(没有列名)。有关更多信息,请参见 FROM。
[ FROM { < table_source > } [ ,...n ] ]
< table_source > ::=
table_name [ [ AS ] table_alias ] [ WITH ( < table_hint > [ ,...n ] ) ]
| view_name [ [ AS ] table_alias ]
| rowset_function [ [ AS ] table_alias ]
| OPENXML
| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]
| < joined_table >
< joined_table > ::=
< table_source > < join_type > < table_source > ON < search_condition >
| < table_source > CROSS JOIN < table_source >
| < joined_table >
< join_type > ::=
[ INNER | { { LEFT | RIGHT | FULL } [OUTER] } ]
[ < join_hint > ]
JOIN
< table_source >
指定用于 SELECT 语句的表、视图、派生表和联接表。
<joined_table>
是两个或更多表的积的结果集。例如:
SELECT *
FROM tab1 LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3
RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4
ON tab3.c1 = tab4.c1
ON tab2.c3 = tab4.c3
对于多个 CROSS 联接,请使用圆括号来更改联接的自然顺序。
<join_type>
指定联接操作的类型。
ON <search_condition>
指定联接所基于的条件。此条件可指定任何谓词,但通常使用列和比较运算符。例如:
SELECT ProductID, Suppliers.SupplierID
FROM Suppliers JOIN Products
ON (Suppliers.SupplierID = Products.SupplierID)
当条件指定列时,列不必有相同的名称或相同的数据类型。但是如果数据类型不同,则它们必须是兼容或可由 Microsoft® SQL Server™ 进行隐性转换的类型。如果数据类型不能隐式转换,则条件必须使用 CAST 函数显式转换数据类型。
有关搜索条件和谓词的更多信息,请参见搜索条件。
CROSS JOIN
指定两个表的矢量积。返回同样的行,就像要联接的表只列于 FROM 子句中,并且未指定 WHERE 子句。例如,这两个查询返回的结果集都由 T1 和 T2 中所有行的完全联接组成:
SELECT * FROM T1, T2
SELECT * FROM T1 CROSS JOIN T2