Ни один из ответов, опубликованных до сих пор (от BrynJ и Vadim), не делает очень тщательной работы. И делать основательную работу также невероятно сложно. Оба ответа предполагают, что достаточно знать, какие идентификационные номера присутствуют в каждой таблице. Однако, как правило, таблицы имеют более одного столбца.
Давайте назовем таблицы A и B.
Одним из важных вопросов является "имеют ли две таблицы одинаковую схему"? Если нет, то одна проблема заключается в том, какие столбцы нужно добавить в A, а какие - в B, чтобы сделать их схемы одинаковыми. Это запрос метаданных, отвечающий из системного каталога. Какие значения следует вставить в столбцы, добавленные в таблицы, представляет собой интересный вопрос.
Предположим, что таблицы на самом деле имеют одинаковую схему, включая одинаковый первичный ключ и одинаковые функциональные зависимости между столбцами. Также предположим, что есть столбец ID (с уникальным целым числом), столбец Name (строка) и столбец RefDate типа DATE.
Table A Table B
ID Name RefDate ID Name RefDate
1 Frederick 2007-01-23 1 Josephine 2009-01-10
Теперь, что нужно вставить, удалить, обновить из каждой таблицы, чтобы они были одинаковыми?
Я думаю, что было бы справедливо сказать, что нет однозначного ответа на это, не зная намного больше контекста. Возможно, Фредерик перенес операцию по смене пола с 2007 года, и запись в B представляет ее новую личность. Или это может быть ошибка; база данных не должна хранить обе эти записи. Или может быть другое решение.
К сожалению, оба запроса Бринджа и Вадима указывают на то, что между А и В нет никакой разницы, что для меня сомнительно.
Кстати, обратите внимание, что сравнение строк, когда строки могут иметь значения NULL, является более сложным, чем когда их нет. Например, рассмотрим сравнение имен:
Нет значений:
(A.Name = B.Name)
С нулями:
(A.Name = B.Name OR (A.Name IS NULL AND B.Name IS NULL))
Еще одна причина избегать нулей, когда вы можете.