Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как создать запрос  [new]
dove_x
Member

Откуда:
Сообщений: 20
Здравствуйте,
подскажите пожалуйста как мне создать запрос

у меня есть две таблицы, нужно сделать выборку так, чтобы в нее попадали данные из первой таблицы, но только те, которых нет во второй.
28 фев 04, 16:54    [555923]     Ответить | Цитировать Сообщить модератору
 Re: как создать запрос  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
select a.* from a left join b on (a.id=b.id) where b.id is null
28 фев 04, 19:50    [555978]     Ответить | Цитировать Сообщить модератору
 Re: как создать запрос  [new]
LERA_
Member

Откуда:
Сообщений: 2
можно также попробовать оператор not in
но вышепредложенный вариант лучше
28 фев 04, 20:34    [555997]     Ответить | Цитировать Сообщить модератору
 Re: как создать запрос  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
автор
нужно сделать выборку так, чтобы в нее попадали данные из первой таблицы, но только те, которых нет во второй.


Ну, ... есть такое слово - СУЩЕСТВУЕТ и есть от него отрицание - НЕ СУЩЕСТВУЕТ...
Переводим всё это на ангельский и получаем NOT EXISTS. Открываем BOL и ищем статью по ключевому слову EXISTS, внимательно читаем и приходим к выводу, что данную задачу можно решить запросом

select t1.* from t1

where NOT EXISTS(select * from t2 where <здесь условие по которому считается что записи в обеих таблицах одинаковы>)


Если ещё немного подумать то придем к выводу, что тот же результат можно получить и с левым внешним объединением таблиц, на подобие того, что предложил rst.

Что применить, решается сравнением планов запросов и настройкой индексов (в большинстве стлучаев разницы никакой нет).
1 мар 04, 06:57    [556422]     Ответить | Цитировать Сообщить модератору
 Re: как создать запрос  [new]
dove_x
Member

Откуда:
Сообщений: 20
Всем большое спасибо, все отлично работает.
1 мар 04, 11:43    [556871]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить