FROM
子句可以为 SELECT
语句指定一个或多个源表。
语法
FROM source [, ...]
source
可以是以下元素之一:
参数 | 说明 |
---|---|
table_name[@dblink ] | 现有表或视图的名称(可能是 schema 限定的)。dblink 是标识远程数据库的 database link 名称。有关 database link 的信息,请参见 CREATE DATABASE LINK 命令。
|
alias | 包含别名的 FROM 项的替代名称。别名既可用于实现简洁目的,又可用于消除自联接的歧义(在自联接中将多次扫描同一个表)。提供别名时,它会完全隐藏表或函数的实际名称;例如,在给定 FROM foo AS f 时,SELECT 的其余部分必须将此 FROM 项引用为 f 而非 foo 。
|
select | 子 SELECT 可出现在 FROM 子句中。这就像在此单一 SELECT 命令持续时间内将其输出创建为临时表一样。请注意,子 SELECT 必须用括号括起来,并且必须为它提供别名。
|
join_type | 该参数为以下项之一:
对于
相反,
|
ON join_condition | join_condition 是一个表达式,它产生一个 BOOLEAN 类型的值(类似于 WHERE 子句),该值指定联接中的哪些行被视为是匹配的。
|
USING (join_column [, ...] ) | 格式 USING
(a, b, ... ) 的子句是 ON left_table.a =
right_table.a AND left_table.b = right_table.b ... 的简写形式。此外,USING 意味着联接输出中只包含每对等效列中的一个,而不是包含这两个列。
|
NATURAL | NATURAL 是 USING 列表的简写形式,其中提到两个表中具有相同名称的所有列。
|
如果指定了多个源,则结果是所有源的笛卡尔积(交叉联接)。通常会添加限定条件以将返回的行限制为笛卡尔积的一个小子集。
示例
以下示例选择 dept 表中的所有条目:
SELECT * FROM dept;
deptno | dname | loc
-------+-------------+-----------
10 | ACCOUNTING | NEW YORK
20 | RESEARCH | DALLAS
30 | SALES | CHICAGO
40 | OPERATIONS | BOSTON
(4 rows)