sql server如何验证两个表中数据完全相同 ,
A表和B表的表结构是一样的,但B表比A表多了一个year字段,该如何验证除了year这个字段意外剩下的数据都相同。。。...
A表和B表的表结构是一样的 ,但B表比A表多了一个year 字段 ,该如何验证除了year这个字段意外剩下的数据都相同 。。。
展开
4个回答
推荐于2016-04-27 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数: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;
展开全部
您好,假设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两个表的数据量相同,且数据相同。
望采纳,希望对你有帮助
语句如下:
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这样一个一个写了。我暂时只能想出这样的方法。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
--如果三个查询查到的数据值一样,则表示三个表数据完全相同
select * from table2 b where a.f1=b.f1 and a.f2=b.field
--查询中条件需要除year字段的值都相等。
)
select count(*) from table1
select count(*) from table2
--如果三个查询查到的数据值一样,则表示三个表数据完全相同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if (select checksum_agg(binary_checksum(*)) from A)
=
(select checksum_agg(binary_checksum(*)) from B)
print '相等'
else
print '不相等'
=
(select checksum_agg(binary_checksum(*)) from B)
print '相等'
else
print '不相等'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |