题
使我的情况很棘手的是,我没有一个列键,只需删除主键的简单列表(例如,“从表中删除where键([list)))。我将多列作为主要键,并且需要加入所有键。
使用我对其他数据库的了解,我认为这可能是:
DELETE FROM
table1 t1
LEFT OUTER JOIN
table2 t2
ON
t2.key1 = t1.key1 AND
t2.key2 = t1.key2
WHERE
t2.key1 IS NULL;
但是Teradata(V12)以错误编号3706做出了响应,说“语法错误:从子句中不允许加入表。”
解决方案
发现这是由:
DELETE FROM
table1
WHERE
(key1, key2) NOT IN (
SELECT UNIQUE key1, key2 FROM table2
);
其他提示
另一种方法是使用相关的子查询:
Delete From Table1
Where Not Exists(
Select 1
From Table2
Where Table2.key1 = Table1.key1
And Table2.key2 = Table1.key2
)
不隶属于 StackOverflow