Как избежать перекрестного отображения в запросе SQL при использовании 2 списков с IN opeartor? - PullRequest
0 голосов
/ 08 ноября 2010

У меня есть таблица HistoryRecords, в которой есть два столбца recordName и timeStamp.Я должен удалить записи на основе обоих.Я использовал следующий запрос для удаления 2 записей <'abc', '2010/10/20 19: 39: 20.0'> и <'def', '2010/10/25 17: 43: 3.0'>:

DELETE FROM HistoryRecords WHERE (recordName IN (N'abc',N'def') AND timeStamp IN (N'2010/10/20 19:39:20.0',N'2010/10/25 17:43:3.0'))

Проблема в том, что приведенный выше запрос приводит к удалению других записей, таких как <'abc', '2010/10/25 17: 43: 3.0'>, поскольку список recordNames содержит 'abc' исписок отметок времени содержит '2010/10/25 17: 43: 3.0'.

Пожалуйста, дайте мне знать любой подход, который предотвратит это дополнительное непреднамеренное удаление.

1 Ответ

0 голосов
/ 08 ноября 2010

Вы должны отделить дела.Не комбинируйте

удаление из historyRecords, где (recName = 'abc' и timeStamp = '2010 ... 19:39') ИЛИ (recName = 'def' и timeStamp = '2010 ... 17:43')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...