联接语法

Vertica 支持用于联接表的 ANSI SQL-92 标准,如下所示:

table‑reference [join-type] JOIN table-reference [ ON join-predicate ]

其中,join-type 可以是以下类型之一:

例如:

=> SELECT * FROM T1 INNER JOIN T2 ON T1.id = T2.id;

替代语法选项

Vertica 还支持两种较旧的联接语法约定:

由 WHERE 子句联接谓词指定的联接

INNER JOIN 等效于在 WHERE 子句中指定其联接谓词的查询。例如,此示例和上一个示例返回相同的结果。它们都分别在 T1.idT2.id 列上指定 T1T2 表之间的内部联接。

=> SELECT * FROM T1, T2 WHERE T1.id = T2.id;

JOIN USING 子句

可以使用 JOIN USING 子句在同名列上联接两个表。例如:

=> SELECT * FROM T1 JOIN T2 USING(id);

默认情况下,由 JOIN USING 指定的联接始终是内联接。

SQL-92 联接语法的好处

Vertica 建议您使用 SQL-92 联接语法,原因如下:

  • SQL-92 外联接语法可跨数据库移植;旧语法不能在数据库之间保持一致。

  • SQL-92 语法可更好地控制是在外联接期间还是之后评估谓词。如果使用旧语法,这同样无法在数据库之间保持一致。

  • SQL-92 语法消除了在通过外联接联接两个以上的表这种情况下,联接评估顺序的不确定性。