我正在尝试使用连接对 HANA 数据库进行更新。在线 SQL 检查器显示有效语法,在我发现以下内容后: https: //answers.sap.com/questions/11364926/sql-update-join-error.html我也更改了更新的顺序。它仍然给出这个错误:
sql语法错误:“LEFT”附近的语法不正确:第3行第1行(第119位)
更新看起来像这样(经过审查,因为它包含来自我公司的一些数据):
UPDATE TABX AS a
SET b.att1 = 'XXX', b.att2 = 'ZZZ'
LEFT JOIN TABZ AS b ON a.att3 = b.att3
WHERE a.att4 LIKE 'YYY'
AND att5 = 'PPP'
AND is_valid = 'TRUE'
Run Code Online (Sandbox Code Playgroud)
根据 SAP Answers 上的帖子,它应该可以工作。我知道我在以前的 SQL 数据库上这样做过,但 HANA 现在是第一次。
我该如何解决这个问题?
当然,语法不正确,如文档中所示(请注意,没有JOIN关键字)。
但是,解决方案取决于您使用的 HANA 版本。
UPDATE... SET... FROM... WHERE...语法(请参阅文档,包括示例)。在这FROM部分中,您基本上执行交叉连接并使用条件使其成为左连接WHERE。FROM的子句UPDATE已被省略,以支持更强大(但更复杂)的MERGE INTO语句(请参阅文档)。请注意,该MERGE INTO语句也适用于本地 HANA2(请参阅文档),这就是为什么它的使用可能更可取的原因。
使用简化语法的示例应类似于以下内容:
UPDATE TABZ SET att1 = 'XXX', att2 = 'ZZZ'
FROM TABZ b, TABX a
WHERE
-- LEFT JOIN
-- (pls check if this should actually be an inner join)
(a.att3 = b.att3 OR b.att3 IS NULL)
-- your other conditions
AND a.att4 LIKE 'YYY' AND att5 = 'PPP' AND is_valid = 'TRUE'
Run Code Online (Sandbox Code Playgroud)
请注意,在任何情况下,您都需要使用UPDATE TABZas 最终更新该表中的列(而不是TABX)。