在单个数据库中比较两个表之间的数据

时间:2013-07-23 09:12:44

标签: sql sql-server sql-server-2008

我要求将两个表数据与一个数据库进行比较,并将不常见的数据存储在同一数据库中名为关系数据的单独表中。

如何比较这些表数据?

比较是他们的任何工具,我们可以使用任何工具将不常见的数据存储在单独的表中吗? 我忘了告诉一件事,两个表具有相同的数据,但列名不同,这意味着例如第一个表有20列,2个表有50列,但是4列是匹配的数据,具有不同的行数和不同的列名每个table.based这些列数据匹配我需要找到行并存储到另一个表

6 个答案:

答案 0 :(得分:3)

作为编写SQL脚本的替代方法,您可以将两个表中的整个结果复制到.csv文件中,然后使用win merge来比较这两个:

http://winmerge.org/downloads/

我在过去比较大量数据时已经使用过这种技术,而且效果非常好。

答案 1 :(得分:2)

这可以在t-sql中完成而不需要付出很多努力。但是在你的问题中,你要求一个工具来完成这个任务。如果你只是想购买一个工具来完成这项工作,那么在我的工作中,我们使用Redgate工具来部署从测试到生产的代码,我相信如果你有点创意,你可以让SQL Data Compare Tool做你要的是什么。

selecting the tables and seeing the differences

如果选择并比较这两个表,它将从一个表生成一个更改脚本。如果您只从一个中获取更改,请保存脚本,然后返回,单击箭头并从另一个方式仅从源中获取更改,您应该具有不常见的属性。

答案 2 :(得分:1)

尝试此查询,我认为其工作

insert into relational(r1,r2,r3,....rn)
(select s1,s2,s3,...sn from 
  information info where info.informationcity not in (select customercity from customer)
   and info.informationstate not in (select customerstate from customer) )

答案 3 :(得分:0)

假设你们两个表都有相同的结构
快又脏?

;WITH cte AS (
SELECT 1 AS OriginTable, *
FROM OriginTable1
UNION SELECT 2 AS  OriginTable, *
FROM OriginTable2
)
SELECT {put here the list of all your columns}
INTO [YourDeltaTable]
FROM cte
GROUP BY {put here the list of all your columns} 
HAVING COUNT(*) = 1

答案 4 :(得分:0)

您可以使用以下查询通过从多个表中检索数据来将数据插入目标表

insert into TargetTable(list_of_columns)
(select list of columns from 
  Table1 t1 join Table2 t2 
on (t1.common_column != t2.common_column))

src列列表计数和目标列列表计数应该相等

答案 5 :(得分:-1)

这是一个假设您的表结构相同的简单示例

DECLARE @a table (
   val char(1)
);

DECLARE @b table (
   val char(1)
);

INSERT INTO @a (val)
  VALUES ('A'), ('B'), ('C');


INSERT INTO @b (val)
  VALUES ('B'), ('C'), ('D'), ('E');

DECLARE @mismatches table (
   val char(1)
);

INSERT INTO @mismatches (val)
SELECT val -- All those from @a
FROM   @a
EXCEPT     -- Where not in @b
SELECT val
FROM   @b;

INSERT INTO @mismatches (val)
SELECT val -- All those from @a
FROM   @b
EXCEPT     -- Where not in @b
SELECT val
FROM   @a;

SELECT *
FROM   @mismatches