内联删除

时间:2019-09-09 12:59:37

标签: sql oracle sql-delete

我想在oracle上进行此查询,但是我得到了

00933. 00000 -  "SQL command not properly ended"

DELETE  FROM DYNAMIC_EXTRACT_DETAILS  DED
INNER JOIN DYNAMIC_CATEGORIE_DETAILS  DCD ON DCD.CATEGORIE_EXTRACT_ID = :i_id_categorie
WHERE EXTRACT_JOIN = DCD.CATEGORIE_EXTRACT_JOIN AND DED.EXTRACT_ID = :i_id_extract

有解决方案吗?感谢您的帮助

2 个答案:

答案 0 :(得分:3)

您还可以使用相关的子查询来表达删除的内容:

DELETE
FROM DYNAMIC_EXTRACT_DETAILS DED
WHERE EXISTS (SELECT 1 FROM
              DYNAMIC_CATEGORIE_DETAILS DCD
              WHERE DED.EXTRACT_JOIN = DCD.CATEGORIE_EXTRACT_JOIN AND
                    DCD.CATEGORIE_EXTRACT_ID = :i_id_categorie) AND
      EXTRACT_ID = :i_id_extract;

答案 1 :(得分:-1)

请尝试合并到-

MERGE INTO DYNAMIC_EXTRACT_DETAILS
USING DYNAMIC_CATEGORIE_DETAILS
ON (DCD.CATEGORIE_EXTRACT_ID = :i_id_categorie)
WHEN MATCHED THEN
     DELETE
WHERE EXTRACT_JOIN = DCD.CATEGORIE_EXTRACT_JOIN AND DED.EXTRACT_ID = :i_id_extract;