CTE 功能后跟删除语句失败并出现语法错误

问题描述 投票:0回答:1

SAP HANA SQL 具有两个通用 CTE,然后是常规表上的删除 SQL。 SQL 执行因语法错误而失败。以下是错误代码和 HANA SQl 脚本。当将“DELETE FROM”替换为“SELECT * Start”时,SQL 执行按预期工作。

你们中的一位能否告诉我们删除记录的正确语法?

WITH CTE_A AS
(
  SELECT COL_1 FROM TABLE_A WHERE
  CONDITION1 = 'ABC'
  AND CONTITION2 = 'XYZ'
),

CTE_B AS
(
  SELECT COL_1, COL_2 FROM TABLE_A WHERE
  CONDITION3 = 'DEF'
  AND COL_1 IN (SELECT COL_1 FROM CTE_A)
)

DELETE FROM TABLE_A
WHERE ACCOUNT_NO IN (SELECT COL_2 FROM CTE_B);

错误:

(dberror)[257]:sql语法错误:“DELETE”附近的语法不正确:第64行第0行(位于位置2273);

common-table-expression hana
1个回答
0
投票

SAP HANA 中的 CTE 仅支持 SELECT 语句。 不支持 UPDATE/DELETE 语句和递归 CTE。

您可以使用子查询来实现相同的功能,如下所示。

DELETE FROM TABLE_A
WHERE ACCOUNT_NO IN (SELECT COL_2 FROM 
                        ( SELECT COL_1, COL_2 FROM TABLE_A WHERE
                          CONDITION3 = 'DEF'
                           AND COL_1 IN ( SELECT COL_1 FROM TABLE_A WHERE
                                          CONDITION1 = 'ABC'
                                          AND CONTITION2 = 'XYZ'
                                         )
                        )
                     ) ;
© www.soinside.com 2019 - 2024. All rights reserved.