Как сравнить 2 таблицы в sql
Перейти к содержимому

Как сравнить 2 таблицы в sql

  • автор:

Как сравнить два столбца в sql

Для сравнения двух столбцов в SQL можно использовать оператор сравнения = или <> .

Например, чтобы выбрать все строки, где значения в столбце A равны значениям в столбце B , можно написать следующий запрос:

А чтобы выбрать все строки, где значения в столбце A не равны значениям в столбце B , можно написать следующий запрос:

Важно учитывать, что сравнение может быть выполнено только между столбцами с одним и тем же типом данных. Если типы данных не совпадают, необходимо преобразовать значения в одинаковый тип данных, например, с помощью функции CAST или CONVERT .

Как сравнить 2 таблицы в sql

Коллеги, поделитесь, кто чем пользуется для сравнения больших объемов данных двух баз 1с при сверках, для регрессионного тестирования и т.д,
Интересны быстрые реализации, например когда представления ссылок извлекаются только для результата сравнения, а сама сверка выполняется по уидам и т.п.

(0) Простые самопальные обработки, запросы в консоли, ХМЛ-ки сравниваю как текстовики, чтобы проводки сравнить в 2 базах. От случая к случаю надо проверять разные вещи — универсального инструмента нет и быть не может.

(0) Для сверки нужно сравнивать не таблицы БД, а отчеты.
Для регрессионного тестирования не нужны большие объемы.

Давай твой конкретный сценарий, найдется конкретное решение. А натягивать сову на глобус не надо.

так мердж ведь
берёшь 2 таблицы , сортируешь по ключу и вперёд
(4) вопрос каким инструментом, чтобы сверить _к примеру_ обороты регистра в двух базах

(5) Делай регистр копию в базе, в него через XML заливай движуху из 2 базы через XML обмен и потом запросик.

Ну или ВнешниеИсточникиДанных
(5) отчет — mxl — сравнить файлы
Это если надо быстро различия глазками увидеть

(5) выкидываешь нужные поля из своих регистров своих двух баз во внешнюю sql базу (1С на чтение шустра достаточно)
внешнюю sql можно использовать sqlite, mssql и прочие на свой вкус

1С, Файл — сравнить файлы.
что значит «большие»? это 10 тыс или 10 лямов или больше?
(11) сотни мегабайт
если на 32 клиенте выбирать то запрос падает по нехватке памяти

(0) У нас есть такая система регресс-тестов. Тупо выгружаем в текстовые файлы и их сравниваем автоматом. Если есть расхождения, то уже смотрим их суть глазками.

Но это реально тупик в развитии тестов, так как с таким подходом 99% ресурсов и времени уходит впустую. Лучше все же переходить на конкретные сценарии с той же Vanessa. Но это дорого в части ресурсов на разработку тестов и сопровождение.

если таблицы действительно большие и идентичные — можно хэшировать и сравнивать только хэш.
у нас только в таком режиме получилось сравнить таблицы в сотни гигабайт между разными городами.

(10) Использую иногда, но выложить файл в ГИТ, а потом поверх него другую версию положить мне больше нравится

потому что в рамках одной строчки последовательности анализируются, а не тупо различающиеся строки выводятся

(5) пару раз пользовались http://catalog.mista.ru/public/276275/ от ildarovich, отлично работает
(13) как всегда, ресурсы либо там тратятся либо тут
(17) сейчас не могу скачать, там по уидам сравнение идет?

Для сравнения таблиц еще есть инструмент в ИР «Сравнение таблиц»
http://devtool1c.ucoz.ru/index/sravnenie_tablic/0-62 (свежий скриншот https://i.imgur.com/TThTRLs.png )
Не знаю насколько он быстр относительно аналогов, но гибкость большая.
Сотни гигибайт через него не сравнивал, но сотни гигабайт вполне комфортно сравнивать.

(20) Сотни мегабайт сравнивал. В нем НЕ потоковое сравнение.

(19) там кейс использования(описан в статье) например в сравнении с вчерашней копией чтобы узнать что изменилось, быстрота реализации достигается не за счет упаковки ссылок.
какой смысл сразу тащить все ссылки, если по факту нужны только ссылки по расхождениям в ресурсах, нужно сначала найти их. ссылки извлекаются (ЗначениеИзСтрокиВнутр) только на этапе когда найдено расхождение в количестве.

Когда требовалось сравнивать огромные идентичные регистры бухгалтерии, выгружал его в файл в одной базе и использовал автоматизированное потоковое сравнение с БД в другой базе. Если процесс сравнения прерывался по какой то причине, то регламент его восстанавливал и он шел дальше. Конечно это далеко не секунды, как у знаменитого Ильдаровича, но работало надежно и без прямого соединения между базами.

Сравнение двух таблиц по содержимому в SQL

Как сравнить две одинаковые по структуре но различающиеся по содержимому таблицы.

1563389000423

SELECT *
FROM base1 a
LEFT JOIN base2 b ON a.id = b.id

1563390595035

В этом примере вместо отсутствующих значений получим NULL.

Запрос с использованием функции EXCEPT

SELECT * FROM test1

SELECT * FROM test2

вернет тот же результат что и запрос

SELECT * FROM test2
WHERE id NOT IN (SELECT id FROM test1)

1563391464558

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

Как сравнить две таблицы sql

Для работы с данными из нескольких таблиц можете попробовать следующие варианты.

Оператор JOIN используется для объединения двух таблиц по определенному условию, например, по ключевому полю. Следующий запрос объединяет две таблицы table1 и table2 по столбцу id и выбирает все строки, где значения в столбцах column1 и column2 совпадают:

Оператор EXCEPT используется для вычитания одной таблицы из другой. Следующий запрос выбирает все строки из таблицы table1 , которых нет в таблице table2 :

Еще есть оператор UNION для объединения строк из двух таблиц, но это не сравнение таблиц, а скорее склейка данных из них.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *