使用复合键删除

Rea*_*ces 6 sql-server delete t-sql

我正在尝试为具有复合键的表创建删除语句。

我想创建类似的东西:

DELETE 
FROM 
    table_example1
WHERE
    COLUMN1, COLUMN2
    IN
    (SELECT COLUMN1, COLUMN2 FROM table_example2
    WHERE
        COLUMN_DATETIME > @Period);
Run Code Online (Sandbox Code Playgroud)

在脑海中只有的组合保持COLUMN1COLUMN2是独一无二的,在自己的每一列不是唯一的。

我似乎无法理解我将如何实际执行此操作。

Sab*_*n B 13

应该是这样的:

DELETE A
FROM 
    table_example1 AS A
    INNER JOIN table_example2 AS B
    ON A.COLUMN1 =B.COLUMN1
    AND A.COLUMN2 = B.COLUMN2
WHERE
    COLUMN_DATETIME > @Period;
Run Code Online (Sandbox Code Playgroud)

或者:

DELETE FROM A
FROM dbo.table_example1 AS A
WHERE EXISTS
(
    SELECT *
    FROM dbo.table_example2 AS B
    WHERE
        B.COLUMN1 = A.COLUMN1
        AND B.COLUMN2 = A.COLUMN2
        AND B.COLUMN_DATETIME > @Period
);
Run Code Online (Sandbox Code Playgroud)