Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 7 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 10.01.2005
Откуда: Москва
Подскажите, пожалуйста, как будет выглядеть SQL запрос для следующей задачи:
Имеется таблица A и таблица B. Как выполнить операцию A=A-B? т.е как удалить
те записи из A, которые имеются в B. В обоих таблицах единственное поле Field.
Заранее благодарен.



Партнер
 

Member
Статус: Не в сети
Регистрация: 15.03.2003
delete from a where a.xxx in (select b.xxx from b)

_________________
Не всё так плохо как есть на самом деле....


 

Member
Статус: Не в сети
Регистрация: 10.01.2005
Откуда: Москва
Вот, то, что надо! Alexx большое спасибо! :)


 

Member
Статус: Не в сети
Регистрация: 20.02.2004
Откуда: Barnaul
Или

delete from a
where exists
(select * from b
where b.xxx=a.xxx)

Будет работать быстрее, если много записей в A соответствует соответстует записям в B.

Кстати, что это за таблица из одного поля? Состоящая только из первичного ключа? Или вообще без него?
В первом случае непонятно, для чего она нужна, а во втором случае это нарушение правил проектирования БД.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Цитата:
а во втором случае это нарушение правил проектирования БД

Ну не все получается делать по правилам, иногда приходится и через голову делать :)
Хотя тут конечно как ни крути не совсем понятно, зачем одно поле? Почему нет ключа? :)


 

Member
Статус: Не в сети
Регистрация: 20.02.2004
Откуда: Barnaul
Ray Adams
Цитата:
Ну не все получается делать по правилам
:shock: Они для того и придуманы (на основе теории множеств) умными людьми, чтобы другие велосипед не изобретали. Иначе проще в Excel'е данные хранить :-)

Добавлено спустя 19 минут, 37 секунд:
Опять же, при проектировании баз данных (если они не для домашнего использования) используют CASE-средства (как правило ERwin), которые не только позволяют оперировать сущностями реального мира и использовать привычную для проблеммных консультантов терминологию, но и избежать многих ошибок. Да и кодогенерация созданной модели значительно упрощает жизнь.
Ray Adams Похоже, меня как Остапа понесло :-)


 

Junior
Статус: Не в сети
Регистрация: 31.05.2004
Откуда: Ереван
Вот ещё
delete from a, a inner join b on a.xxx = b.xxx as a1
where a.xxx = a1.xxx

Насколько знаю, в MSSQL сервере подзопросы оптимизируються на join - и.
И это будет бытрее выполняться.
Согласен с вами, это нарушение правил проектирования БД,

_________________
Когда другие уже закончили, процессоры Intel Pentium продолжают работать, работать и работать ...


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 7 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan