Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL-比较两个表_Sql Server - Fatal编程技术网

Sql server SQL-比较两个表

Sql server SQL-比较两个表,sql-server,Sql Server,我对SQL真的是个新手,但有人给了我一个需要完成的任务 我有一张桌子,有时我会换一张新桌子。我需要做的是将新的与旧的进行比较,并查看修改值、删除行或添加行的所有差异。在获得所有差异后,我必须创建一个新表,它将是第一个表的更新版本 在读了一天关于SQL的书之后,我就知道了除了,所以我知道如何找出差异,但不确定这是否是最好的方法,但我不知道如何完成所有的过程 SELECT * FROM dbo.Price_List1 EXCEPT SELECT * FROM dbo.Price_List2 非常感

我对SQL真的是个新手,但有人给了我一个需要完成的任务

我有一张桌子,有时我会换一张新桌子。我需要做的是将新的与旧的进行比较,并查看修改值、删除行或添加行的所有差异。在获得所有差异后,我必须创建一个新表,它将是第一个表的更新版本

在读了一天关于SQL的书之后,我就知道了除了,所以我知道如何找出差异,但不确定这是否是最好的方法,但我不知道如何完成所有的过程

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

非常感谢。如果dbo.Price_列表1和dbo.Price_列表2的模式相等,则。您可以使用以下查询

(   SELECT * FROM dbo.Price_List1
    EXCEPT
    SELECT * FROM dbo.Price_List2)  
UNION ALL
(   SELECT * FROM dbo.Price_List2
    EXCEPT
    SELECT * FROM dbo.Price_List1)

你在找负号吗?-1,因为你要的是什么还不清楚:1。你说的新桌子是什么意思?新旧表是否具有完全相同的模式?2.您是否只对数据差异而不是模式差异感兴趣?3.你所说的第一个版本的更新是什么意思?感谢您编辑问题以澄清这些问题。顺便说一句:您的EXCEPT查询不会让您知道所有差异。假设两个表具有完全相同的模式,由于*,因此不明显;我建议你养成拼写所有列名的习惯!,您的查询只告诉您哪些记录是dbo.Price_列表1中的专有记录。它不会告诉您dbo.Price_List2中只有哪些记录;为此,您必须交换两个SELECT语句。如果我不清楚,我很抱歉。两个表具有相同的模式。基本上一列表示ID,一列表示NAME,一列表示VALUE。表之间可能发生的变化是值的变化,也可能是添加/删除的行。为了安全起见,我将创建第三个表,而不是用新内容更新第一个表。我真的,真的很新,所以如果我不是很清楚,我很抱歉。看到这个: