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 ;
我使用 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 ;