Как удалить записи из базы данных SQL Server - PullRequest
0 голосов
/ 17 января 2011

У меня есть 3 таблицы:

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

Таблица AccFiles связывает первичные ключи таблицы Files с таблицей Accounts.

В моем сценарии, если есть запись об учетной записи, также будет 1 соответствующий файл в таблице файлов и ссылка на оба в таблице AccFiles. Я предполагаю, что это отношения 1 к 1. К сожалению, из-за ошибки некоторые файлы были удалены, но их Аккаунт и запись в таблице AccFiles этого не сделали. Мне нужно написать сценарий SQL, который будет удалять записи из таблицы Accounts и таблицы AccFiles, где больше нет соответствующего файла (на что ссылается Accfiles FileID).

Я использую SQL Server и не знаю, как это сделать. Кто-нибудь может помочь?

1 Ответ

2 голосов
/ 17 января 2011

Это удалит все записи из 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
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...