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

Откуда:
Сообщений: 738
Добрый день!
--------------
Есть 2 таблицы с одинаковой структурой.
Из Таблицы 1 полностью перекачиваются данные в Таблицу 2.
Теперь надо сравнить данные в таблицах на идентичность, чтобы быть уверенным, что данные в 2-х таблицах абсолютно одинаковы.

Как можно сравнить данные в 2-х таблицах, имеющих одинаковую структуру?
Есть ли в MSSQL стандартные средства?

Просто сравнить по кол-ву записей недостаточно.

Заранее благодарен.
14 дек 05, 08:38    [2169287]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данных в 2-х таблицах  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
ТОП 10 самых популярных вопросов - Вопрос 9
14 дек 05, 08:45    [2169298]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данных в 2-х таблицах  [new]
m52
Member

Откуда:
Сообщений: 738
Не совсем понятно, что нужно рассматривать.
Разность A - B ? Там группировка по конкретному полю.
А как проверить данные полностью, если колонок может быть сколь угодно много?
14 дек 05, 10:29    [2169627]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данных в 2-х таблицах  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34274
Блог
с помощью join
14 дек 05, 10:35    [2169646]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данных в 2-х таблицах  [new]
m52
Member

Откуда:
Сообщений: 738
А если быть точнее? Напишите примерчик на примере таблиц A и B
14 дек 05, 10:48    [2169710]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данных в 2-х таблицах  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

ну а
поиском-то
пользоваться не пробовали?
вот тут, например есть несколько вариантов...


Posted via ActualForum NNTP Server 1.3

14 дек 05, 11:03    [2169778]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данных в 2-х таблицах  [new]
A_Roman
Member

Откуда: Барнаул
Сообщений: 11
есть идея
1 делаешь запрос к первой таблице с DISTINCT запоминаешь количество строк
2 объединяешь обе таблицы в одну с UNION ALL
3 делаешь запрос к результату с DISTINCT запоминаешь количество строк
4 остается сравнить количество строк, если равно то вероятность что таблицы одинаковы очень большая
5 еще можно сгруппировать результат объединения по всем полям с подсчетом количества записей, если таблицы одинаковы тогда количество одинаковых записей кратно двум, далее еще можно придумать

хотя если объединять без UNION ALL тогда остается только сравнить количество строк в исходной таблице с таблицей после обединения
14 дек 05, 12:50    [2170400]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данных в 2-х таблицах  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34274
Блог
Можно так
SELECT *
  FROM  T1
  FULL JOIN T2 ON T1.key  = T2.key
  WHERE T1.key IS NULL OR T2.key IS NULL OR
        T1.nokey1 <> T2.nokey1 OR
        T1.nokey2 <> T2.nokey2 OR
        T1.nokey3 <> T2.nokey3 OR
        T1.nokey4 <> T2.nokey4 OR
        ...
        T1.nokeyN <> T2.nokeyN
или так
SELECT *
  FROM  T1
  FULL JOIN T2 ON T1.key  = T2.key
  WHERE BINARY_CHECKSUM(T1.nokey1,...,T1.nokey2) <> BINARY_CHECKSUM(T2.nokey1,...,T2.nokey2)

НО для CHECKSUM есть вероятность, что вы не поймете изменения, для BINARY_CHECKSUM вероятно так же
14 дек 05, 14:07    [2170860]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение данных в 2-х таблицах  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34274
Блог
Критик
вы не поймете изменения

следует читать так: "вы не поймаете изменения"
))
14 дек 05, 14:09    [2170870]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить