Есть ли быстрый способ сравнить две таблицы одинакового формата в SQL? - PullRequest
4 голосов
/ 21 июня 2010

Я хотел бы сделать запрос SQL для сравнения двух таблиц с одинаковыми столбцами, как именами, так и типами. Каждая таблица имеет уникальный ключ. Я хочу, чтобы запрос возвращал все строки, содержащие неравные значения. Я знаю, может сделать что-то вроде этого

select * 
from table_1, table_2
where 
table_1.key = table_2.key
and (
 table_1.col1 != table_2.col1 OR
 table_1.col2 != table_2.col2 OR
 ...

)

но это было бы утомительно, так как существует большое и потенциально переменное количество столбцов.

редактировать

Если это поможет, я использую систему tsql.

Ответы [ 3 ]

3 голосов
/ 21 июня 2010

Не уверен, какой тип БД вы используете, но если вы используете SQL Server 2005 или выше, попробуйте это:

select 'table1' as tblName, *  from
  (select * from table1
   except
   select * from table2) x
union all
select 'table2' as tblName, *  from
  (select * from table2
   except select * 
   from table1) x
1 голос
/ 21 июня 2010

Как это примерно ..

select * from table1 where not exists (select * from table2)
union all
select * from table2 where not exists (select * from table1)
0 голосов
/ 04 июня 2017

Проверено на SQL Server:

(select * from table1 except select * from table2)
    union
(select * from table2 except select * from table1);

Проверено с Oracle:

(select * from table1 minus (select * from table2))
    union
(select * from table2 minus (select * from table1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...