SAP HANA通过加入进行更新

  • 本文关键字:更新 HANA SAP sql hana
  • 更新时间 :
  • 英文 :


我正在尝试使用Join对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'

根据SAP Answers上的帖子,它应该起作用。我知道我在以前的SQL数据库上做过这件事,但HANA现在是第一次。

我该如何解决这个问题?

当然,正如文档中所示,语法是不正确的(请注意,没有JOIN关键字(。

但是,该解决方案取决于您正在使用的HANA版本。

  • HANA2内部部署:您可以使用UPDATE... SET... FROM... WHERE...语法(请参阅包含示例的文档(。在FROM部分中,您基本上执行了交叉联接,并使用WHERE条件使其成为左联接
  • HANA Cloud:在HANA Cloud中,UPDATE语句的FROM子句已被省略,取而代之的是更强大(但更复杂(的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' 

请注意,在任何情况下,您都需要使用UPDATE TABZ来最终更新该表中的列(而不是TABX(。

最新更新