使用 Join 删除

联接也可以在 DELETE 语句中使用。给出如下架构:

CREATE TABLE Users (
    UserId int NOT NULL,
    AccountId int NOT NULL,
    RealName nvarchar(200) NOT NULL
)

CREATE TABLE Preferences (
    UserId int NOT NULL,
    SomeSetting bit NOT NULL
)

我们可以从 Preferences 表中删除行,按 Users 表中的谓词进行过滤,如下所示:

DELETE p
FROM Users u
INNER JOIN Preferences p ON u.UserId = p.UserId
WHERE u.AccountId = 1234

这里 p 是语句的 FROM 子句中定义的 Preferences 的别名,我们只删除 Users 表中匹配 AccountId 的行。