我有一个带有两个通用 CTE 的 SAP HANA SQL 查询,然后是常规表上的删除 SQL。 SQL 执行因语法错误而失败。以下是错误代码和 HANA 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);
将“DELETE FROM”替换为“SELECT * Start”时,SQL 执行按预期工作。
你们中的一位能否告诉我们删除记录的正确语法?
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'
)
)
) ;