使我的情况变得棘手的是我没有一个列密钥,只有一个简单的主键列表要删除(例如,“从表中删除键入([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(第12版)以错误号3706回应,说“语法错误:FROM子句中不允许加入表。”
答案 0 :(得分:9)
发现这是通过以下方式完成的:
DELETE FROM
table1
WHERE
(key1, key2) NOT IN (
SELECT UNIQUE key1, key2 FROM table2
);
答案 1 :(得分:2)
另一种方法是使用相关子查询:
Delete From Table1
Where Not Exists(
Select 1
From Table2
Where Table2.key1 = Table1.key1
And Table2.key2 = Table1.key2
)