Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как вычесть из запроса те строки, которые есть в другой таблице? / 10 сообщений из 10, страница 1 из 1
11.10.2002, 12:39:35
    #32057444
Nikolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычесть из запроса те строки, которые есть в другой таблице?
Всем привет! Проблема такая. Есть 2 таблицы с одинаковым набором полей. Мне нужно из 1-й таблицы выбрать все строки, кроме тех, которые есть во 2-й таблице . Что-то типа UNION ALL, только наоборот. В Oracle решал такую проблему просто, там есть операция MINUS, а как это сделать в MS SQL 2000 ?
Помогите, пожалуйста!
...
Рейтинг: 0 / 0
11.10.2002, 12:42:04
    #32057447
Nikolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычесть из запроса те строки, которые есть в другой таблице?
Всем привет! Проблема такая. Есть 2 таблицы с одинаковым набором полей. Мне нужно из 1-й таблицы выбрать все строки, кроме тех, которые есть во 2-й таблице . Что-то типа UNION ALL, только наоборот. В Oracle решал такую проблему просто, там есть операция MINUS, а как это сделать в MS SQL 2000?
Помогите, пожалуйста!
...
Рейтинг: 0 / 0
11.10.2002, 12:43:18
    #32057449
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычесть из запроса те строки, которые есть в другой таблице?
А на основе какого поля(полей) нужно принимать решение о наличии/отсутствии одинаковых записей ?
Если только по первичному ключу, то так

SELECT a.*
FROM table1 a
LEFT OUTER JOIN table2 b ON b.id = a.id
WHERE b.id IS NULL
...
Рейтинг: 0 / 0
11.10.2002, 12:49:04
    #32057456
Shura_M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычесть из запроса те строки, которые есть в другой таблице?
здесь было
...
Рейтинг: 0 / 0
11.10.2002, 12:51:35
    #32057460
Nikolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычесть из запроса те строки, которые есть в другой таблице?
На основе всех полей.
Например, есть таблицы А и В с полями F1, F2, F3
Данные в А:
1 3 7
1 3 9
1 3 2
2 6 7
2 3 5

Данные в В:
2 4 8
1 3 2

Так вот, мне нужно выбрать все из А, но чтобы не было строки 1 3 2, т.к. она есть в таблице В.
...
Рейтинг: 0 / 0
11.10.2002, 12:57:55
    #32057464
Luchkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычесть из запроса те строки, которые есть в другой таблице?
Я такую фигню смог только так побороть:

Код: plaintext
1.
2.
select * from A 
where not cast(F1 as varchar)+'|'+cast(F2 as varchar)+'|'+cast(F3 as varchar) in (select cast(F1 as varchar)+'|'+cast(F2 as varchar)+'|'+cast(F3 as varchar) from B)


Жуткий изврат, но бОльшего мне придумать не дано. может гуру более красивое решение знают....
...
Рейтинг: 0 / 0
11.10.2002, 13:05:42
    #32057468
Nikolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычесть из запроса те строки, которые есть в другой таблице?
Ответ в другом форуме подсказали, очень красиво на мой взляд и главное! - работает! :)

Код: plaintext
1.
2.
3.
select * from table1 t1
where not exists
 (select  1  from table2 t2
  where t2.col1 = t1.col1 and t2.col2 = t1.col2)
...
Рейтинг: 0 / 0
11.10.2002, 13:10:30
    #32057470
dkstranger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычесть из запроса те строки, которые есть в другой таблице?
И почти то же самое
select * from table1 t1
where not col1 in in
(select col1 from table2 t2
where t2.col2 = t1.col2)
...
Рейтинг: 0 / 0
11.10.2002, 13:55:36
    #32057497
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычесть из запроса те строки, которые есть в другой таблице?
По моему, только так
Код: plaintext
1.
select * from table1 t1
where not exists(select  1  from table2 t2 where t1.field1 = t2.field1 and t1.field2 = t2.field2)
...
Рейтинг: 0 / 0
11.10.2002, 14:05:58
    #32057504
Предводитель команчей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вычесть из запроса те строки, которые есть в другой таблице?
Можно еще так

select a.f1,b.f1
from a
left join b on a.f1 = b.f1
where b.f1 is null

f1 - ключевое поле в табл. a и b. Результат - все строки из b, кроме тех кот. есть в a.
Удачи.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как вычесть из запроса те строки, которые есть в другой таблице? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]