hsql2.3.6外部连接语法

ercv8c1e  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(350)

我使用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版本的文档,我不确定。你确认了?
先谢谢你

bxfogqkk

bxfogqkk1#

这个 (+) 是oracle的专有外部联接运算符(只有oracle支持),甚至oracle也建议停止使用它。
hsqldb支持标准的左连接

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

(我不确定方向是否正确,我没有用过甲骨文的 (+) 运营商(数十年)

goucqfw6

goucqfw62#

不要在句子中使用逗号 FROM 条款。始终使用适当的、明确的、标准的、可读的 JOIN 语法。
对于外部联接,您使用的是过时的定制语法。我想你想要:

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

你可能把你的问题简单化了。如前所述,可能不需要外部联接:

SELECT A.REF
FROM TableA A ;

相关问题