sql - 如何删除 Teradata 表中不在另一个表中的行?

标签 sql teradata

使我的情况变得棘手的是我没有一个列键,只有一个简单的主键列表要删除(例如,“从表中删除键([列表])”)。我有多个列作为主键,并且需要加入所有列。

使用我对其他数据库的了解,我认为这可能是这样做的:

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 响应,说“语法错误:FROM 子句中不允许连接表。”

最佳答案

发现这是通过以下方式完成的:

DELETE FROM
    table1
  WHERE
    (key1, key2) NOT IN (
      SELECT UNIQUE key1, key2 FROM table2
    );

关于sql - 如何删除 Teradata 表中不在另一个表中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4321432/

相关文章:

sql - 将数字转换为 varchar 0 数字后消失

sql - Teradata SQL:PDCR 表连接::有人可以解释一下行数差异吗

sql - Teradata/使用 UNION 合并记录不起作用

mysql - 如何选择 * 并重命名列?

sql - 连通分量

MySQL:如何创建触发器来设置新行的创建日期

mysql - 带条件的 SQL GROUP BY?

Teradata LOCK ROW FOR ACCESS 将查询插入到 VOLATILE TABLE 中

mysql - 查询不匹配多个条件

mysql - 嵌套 SQL 查询在 MySql 中以不同形式运行时抛出错误