HSQL 2.3.6 外连接语法

HSQL 2.3.6 outer join syntax

我使用 HSQL 2.3.6,我想使用以下语法进行连接:

SELECT A.REF FROM TableA A, TableB B
WHERE A.NUM = B.NUM (+)

但是在文档中(我的 HSQL 的最新版本)http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_joined_table 语法是:

<joined table> ::= <cross join> | <qualified join> | <natural join>

<qualified join> ::= <table reference> | [ <join type> ] JOIN <table reference> <join specification>

<join specification> ::= <join condition> | <named columns join>

<join condition> ::= ON <search condition>

<join type> ::= INNER | <outer join type> [ OUTER ]

<outer join type> ::= LEFT | RIGHT | FULL

<join column list> ::= <column name list>

我的语法有 SQLSyntaxErrorException,我认为这是因为我的语法不兼容。

但是没有我的 HSQL 版本的文档,我不确定。您确认了吗?

提前致谢

(+)是Oracle专有的外连接运算符(只有Oracle支持),连Oracle都建议停止使用。

HSQLDB支持标准的LEFT JOIN

SELECT ...
FROM TableA A
  LEFT JOIN TableB B on A.NUM = B.NUM;

(不确定我的方向是否正确,我几十年来没有使用 Oracle 的 (+) 运算符)

从不FROM 子句中使用逗号。 始终使用正确、明确、标准、可读的JOIN语法。

您正在为外部联接使用过时的定制语法。我想你想要:

SELECT A.REF
FROM TableA A LEFT JOIN
     TableB B
     ON A.NUM = B.NUM;

您可能过于简化了查询。正如所写,可能不需要外部连接:

SELECT A.REF
FROM TableA A ;