powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL 2014 - Определить есть ли разница в содержимом таблиц
7 сообщений из 7, страница 1 из 1
SQL 2014 - Определить есть ли разница в содержимом таблиц
    #39716388
Blackmore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сервер, на к-ром в Table1 хранится около миллиарда записей. В таблице этой ключей нет, индексов тоже. Зато есть порядка 100 колонок. Есть таблица Table2, такая же по структуре (ни ключей, ни индексов, те же 100 колонок), куда пока накидали около 10 миллионов записей. Еще известно, что все 10 миллионов записей в Table2 получены из файла, который перед этим импортировался в Table1. Нужно средствами SQL (можно с подключением фич MSSQL до 2014 включительно) сравнить эти 10 миллионов с предполагаемыми эталонными 10 миллионами, лежащими уже в Table1 и сказать, идентичны они или нет. Показывать тех, кто неидентичен, не надо пока. Как это сделать?
...
Рейтинг: 0 / 0
SQL 2014 - Определить есть ли разница в содержимом таблиц
    #39716398
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Невозможно без наличия столбцов, идентифицирующих строку.

Можно так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select
 count(*)
from
 (
  select * from Table2
  intersect
  select * from Table1
 ) t

Если результат 10 миллионов, то, предположительно, идентичны.
...
Рейтинг: 0 / 0
SQL 2014 - Определить есть ли разница в содержимом таблиц
    #39716402
Blackmore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmНевозможно без наличия столбцов, идентифицирующих строку.

Почему? Все 100 столбцов и есть "идентифицирующие строку". Т.е. 2 строки идентичны только тогда, когда ВСЕ 100 колонок попарно одинаковы.
...
Рейтинг: 0 / 0
SQL 2014 - Определить есть ли разница в содержимом таблиц
    #39716426
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blackmore,

А у вас все записи в таблицах уникальные?

Если да, то можно посмотреть в сторону BINARY_CHECKSUM.
Не знаю будет ли это быстрее, чем простое сравнение по колонкам, но если у вас там тексты, например, то будет.
...
Рейтинг: 0 / 0
SQL 2014 - Определить есть ли разница в содержимом таблиц
    #39716440
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blackmore,

"сложить" две "разности" таблиц:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select *
  from ( -- Разность "T1 - T2"
         select 'Есть в T1, но нет в T2' as flag, * from T1
         EXCEPT
         select 'Есть в T1, но нет в T2' as flag, * from T2
       )
 UNION ALL
       ( -- Разность "T2 - T1"
         select 'Есть в T2, но нет в T1' as flag, * from T2
         EXCEPT
         select 'Есть в T2, но нет в T1' as flag, * from T1
       )
...
Рейтинг: 0 / 0
SQL 2014 - Определить есть ли разница в содержимом таблиц
    #39716443
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blackmore,

хотя, в вашем случае достаточно разности между сравниваемой таблицей и эталоном:
Код: sql
1.
2.
3.
select * from t2
except
select * from t1



Пустое множество на выходе как раз и будет означать тот факт, что все строки в T2 имеют свой полный аналог в таблице T1.
Другое дело, что с дублями будет сложнее разобраться... Ибо все операции над множествами (кроме union ALL) - "игнорируют" дубли, накладывая, по сути, DISTINCT на результата своей работы...
...
Рейтинг: 0 / 0
SQL 2014 - Определить есть ли разница в содержимом таблиц
    #39716444
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackmoreНужно средствами SQL сравнить эти 10 миллионов с предполагаемыми эталонными 10 миллионами, лежащими уже в Table1 и сказать, идентичны они или нет. Показывать тех, кто неидентичен, не надо пока. Как это сделать?

Какие такие "предполагаемыми эталонными 10 миллионами".
Если нет исходного "который перед этим импортировался "
То сравнивать надо наличие 10млн из Table2, в Table1

"Сравнить", это одно, а результат какой надо получить если не нужно показывать неидентичные?

Удалить из Table2 отсутствующие в Table1 или сформировать Table3 с идентичными?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL 2014 - Определить есть ли разница в содержимом таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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