sql server如何验证两个表中数据完全相同 ,

2025-03-07 02:14:37
推荐回答(4个)
回答1:

  加法去重 union 运算符排除重复的,但是有bug,在某些情形下不能简单表示结果集一致,相当于无效。由于Union 本身具备把上下两条连接的记录做唯一性排序,所以这样检测起来比较简单。

SELECT  COUNT(*)
FROM    ( SELECT    *
          FROM      [t1_old]
          UNION
          SELECT    *
          FROM      [t1_new]
        ) AS T;


INSERT INTO [dbo].[t1_new]
        ( [id],[log_time] )
VALUES(1,''),(3,''),(4,'')

INSERT INTO [dbo].[t1_old]
        ( [id],[log_time] )
VALUES(1,''),(2,''),(3,'')

SELECT * FROM [dbo].[t1_new]
SELECT * FROM [dbo].[t1_old]

SELECT  COUNT(*)
FROM    ( SELECT    *
          FROM      [t1_new]
          UNION
          SELECT    *
          FROM      [t1_old]
        ) AS T;

回答2:

您好,假设A表有列a,b,B表有列a,b,year。
语句如下:
select count(*) from A t1,B t2 where t1.a=t2.a and t1.b=t2.b获得两个表相同数据的数据量,假设结果是c1
select count(*) from A 获得A表数据量,假设加过是c2
select count(*) from B 获得B表数据量,假设结果是c3
在此,如果c1=c2=c3,则A,B两个表的数据量相同,且数据相同。

望采纳,希望对你有帮助

回答3:

select count(*) from table1 a where exists(
select * from table2 b where a.f1=b.f1 and a.f2=b.field
--查询中条件需要除year字段的值都相等。
)
select count(*) from table1
select count(*) from table2
--如果三个查询查到的数据值一样,则表示三个表数据完全相同

回答4:

if (select checksum_agg(binary_checksum(*)) from A)
=
(select checksum_agg(binary_checksum(*)) from B)
print '相等'
else
print '不相等'