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

A表和B表的表结构是一样的,但B表比A表多了一个year字段,该如何验证除了year这个字段意外剩下的数据都相同。。。... A表和B表的表结构是一样的 ,但B表比A表多了一个year 字段 ,该如何验证除了year这个字段意外剩下的数据都相同 。。。 展开
 我来答
huanglenzhi
推荐于2016-04-27 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517174
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部

  加法去重 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;

ppssyy1100
2012-05-22 · TA获得超过1793个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:237万
展开全部
您好,假设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两个表的数据量相同,且数据相同。

望采纳,希望对你有帮助
追问
这样不行啊 ,我这两个表里有上百个字段 ,我也不都都判断一下啊 。而且主要是要验证里面的内容是相同的
追答
你要验证内容是一样的,那肯定数据条数也要一致啊。如果B比A多一条记录,肯定就代表数据不一致了。
而select count(*) from A t1,B t2 where t1.a=t2.a and t1.b=t2.b计算出了两个表数据相同的条数。
如果A,B的数据条数等于两个表数据相同的条数,则两个表的数据内容是一样的啦。
而你说每个表有n个列,那是不可能的,这样的表设计很垃圾。而假设真的是有很多个列,那你也只能a=t2.a and t1.b=t2.b这样一个一个写了。我暂时只能想出这样的方法。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1193bb8f7b
2012-05-22 · TA获得超过194个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:276万
展开全部
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
--如果三个查询查到的数据值一样,则表示三个表数据完全相同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沉稳内敛ww
2012-05-22 · 超过21用户采纳过TA的回答
知道答主
回答量:152
采纳率:0%
帮助的人:63.4万
展开全部
if (select checksum_agg(binary_checksum(*)) from A)
=
(select checksum_agg(binary_checksum(*)) from B)
print '相等'
else
print '不相等'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式