5

私の状況を複雑にしているのは、削除する主キーの単純なリストを持つ単一の列キーがないことです (たとえば、「([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 で応答し、「構文エラー: 結合されたテーブルは FROM 句では許可されていません」と言います。

4

2 に答える 2

11

これは次の方法で行われていることがわかりました。

DELETE FROM
    table1
  WHERE
    (key1, key2) NOT IN (
      SELECT UNIQUE key1, key2 FROM table2
    );
于 2010-12-01T05:23:10.250 に答える
2

もう 1 つの方法は、相関サブクエリを使用することです。

Delete From Table1
Where Not Exists(
                Select 1 
                From Table2 
                Where Table2.key1 = Table1.key1
                    And Table2.key2 = Table1.key2
                )
于 2010-12-01T06:26:53.847 に答える