我的删除语句在Oracle中返回933错误,我不知道出了什么问题 -
DELETE b
from temp a
JOIN
fact_tab b
on a.col1 = b.col1
and a.col2 = b.col2
and a.col3 = b.col3;
两个表都没有主键。关于同一件事的select语句有效 -
select *
from temp a
JOIN
fact_tab b
on a.col1 = b.col1
and a.col2 = b.col2
and a.col3 = b.col3;
答案 0 :(得分:3)
试试这个
DELETE FROM
fact_tab
WHERE
EXISTS
(
SELECT
1
FROM
temp
WHERE
temp.col1 = fact_tab.col1 AND
temp.col2 = fact_tab.col2 AND
temp.col2 = fact_tab.col2
)
答案 1 :(得分:1)
Oracle不允许直接在DELETE语句中使用JOIN。
您可以通过以下方式进行删除:
DELETE
FROM fact_tab
WHERE ROWID IN
(SELECT b.rowid
FROM temp a
JOIN fact_tab b
ON a.col1 = b.col1
AND A.col2 = b.col2
AND A.col3 = b.col3
);
您也可以使用WHERE EXISTS
子句。