![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление множества записей (SQL, Access) [Access]
Сашик © (2008-07-06 17:23:00)Можно ли на SQL составить запрос на удаление множества записей из одной таблицы по определенному критерию
sniknik (2008-07-06 22:52:00) [1]> Насколько я понимаю, при использовании EXISTS, если хоть одно значение подзапросом возвращается, то выполняется основной опрератор
пока еще тебе надо не "понимать", а изучать основы, возьми любую книгу по sql и почитай что делает EXISTS, тока реально почитай. не так как последовал совету почитать про объединения...
> Сообразил...
"соображаешь" еще хуже чем чем понимаешь... запрос получился просто чудо как хорош... для орешника.
> Вопрос закрыт...
очень хорошо, а то ломает объяснять тому кто не слушает.
Сашик (2008-07-06 21:49:00) [2]Сообразил...Оказывается можно IN!
DELETE * FROM INITTAB WHERE INITTAB.IDINI IN (SELECT INITTAB.IDINI FROM INITTAB LEFT JOIN INITMAIN ON INITTAB.IDINI = INITMAIN.IDINI WHERE INITMAIN.IDINI Is NULL)
Очищает таблицу от хлама. Вопрос закрыт...
Сашик (2008-07-06 19:17:00) [3]Насколько я понимаю, при использовании EXISTS, если хоть одно значение подзапросом возвращается, то выполняется основной опрератор. Я понимаю почему удаляются все записи. Меня интересует, можно ли как нибудь изменить конструкцию запроса?
sniknik (2008-07-06 19:08:00) [4]удаляется именно то что запрошено, отобранное во внутреннем запросе...
выполни его отдельно и удостоверься что все записи из DATADOC там присутствуют... и почитай после про объеденения, что именно означает LEFT JOIN к примеру.
Сашик (2008-07-06 18:58:00) [5]Использую запрос
DELETE FROM DATADOC WHERE EXISTS (SELECT * FROM DATADOC
LEFT JOIN INITMAIN ON DATADOC.NN = INITMAIN.LFILEDOC WHERE INITMAIN.LFILEDOC Is NULL)
Удаляются все записи в DATADOC. Применять IN нельзя. Как все-таки удалить за один проход?
Сашик (2008-07-06 18:41:00) [6]Ха-Ха...Ситуация такая: основная таблица работает со справочником. После сеанса хочу удалить все записи в справочнике, не использованные в основной таблице. Для поиска пустых строк в критерии использую LEFT JOIN. Пока ничего не поучается. Может кто поможет?
Тын-Дын (2008-07-06 17:37:00) [7]
DELETE FROM MyTable WHERE Field1=1
Anatoly Podgoretsky (2008-07-06 17:36:00) [8]Можно.