如何从SQL Server数据库中删除记录

时间:2011-01-17 16:40:46

标签: sql-server-2008

我有3张桌子:

Files (primary key = FileID)
Accounts (primary key = AccountID)
AccFiles (2 fields: FileID and AccountID)

AccFiles表将Files表的主键链接到Accounts表。

在我的场景中,如果有一个帐户记录,那么在Files表中也会有一个相应的File,并且在AccFiles表中也会引用两个。我想这是一对一的关系。不幸的是,由于一个错误,一些文件被删除,但他们的帐户和AccFiles表中的记录没有。我需要编写一个SQL脚本,它将删除Accounts表和AccFiles表中不再有相应文件的记录(由Accfiles FileID引用)。

我正在使用SQL Server,并且不知道如何执行此操作。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

这将从AccFiles表中不存在FileId字段的File中删除所有记录,然后删除Accounts字段AccountId中的所有记录AccFiles表中不存在:

DELETE AccFiles
WHERE FileID
NOT IN
(
  SELECT FileID
  FROM Files
);

DELETE Accounts
WHERE AccountId
NOT IN
(
  SELECT AccountId
  FROM AccFiles
);