2014-06-24 5 views
0

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

У меня есть один стол, и время от времени я получу новый стол. Мне нужно сравнить новый со старым и увидеть все различия (измененные значения, удаленные строки или добавленные строки). Получив все различия, я должен создать новую таблицу, которая будет обновленной версией первой.

После всего лишь одного дня, прочитавшего о SQL, я получил до EXCEPT, поэтому я знаю, как определить различия (не уверен, что это лучший способ), но я не знаю, как сделать весь процесс.

SELECT * FROM dbo.Price_List1 
EXCEPT 
SELECT * FROM dbo.Price_List2 

спасибо, что заранее.

+0

Вы ищете 'MINUS'? –

+1

-1, потому что совершенно непонятно, о чем вы просите: ** 1. ** Что вы подразумеваете под «новой таблицей» _? У обеих таблиц (старых и новых) есть точно такая же схема? ** 2. ** Вас интересуют только различия данных (в отличие от различий в схемах)? ** 3. ** Что вы подразумеваете под «обновленной версией первого»? _? Благодарим за редактирование вашего вопроса, чтобы прояснить эти моменты. – stakx

+2

Btw: Ваш запрос 'EXCEPT' не дает вам знать о * all * различиях. Предполагая, что обе таблицы имеют точно такую ​​же схему (не очевидна из-за '*', я предлагаю вам привыкнуть указывать имена всех столбцов!), Ваш запрос сообщает только, какие записи находятся исключительно в 'dbo.Price_List1' , Он не скажет вам, какие записи относятся исключительно к 'dbo.Price_List2'; для этого вам придется поменять два оператора SELECT. – stakx

ответ

0

Если схема dbo.Price_List1 и dbo.Price_List2 была равна. вы можете использовать следующий запрос.

( SELECT * FROM dbo.Price_List1 
    EXCEPT 
    SELECT * FROM dbo.Price_List2) 
UNION ALL 
( SELECT * FROM dbo.Price_List2 
    EXCEPT 
    SELECT * FROM dbo.Price_List1) 
Смежные вопросы