求SQL语句:比较两张表中不一样的行

来源:百度知道 编辑:UC知道 时间:2024/05/27 07:37:39
现有A B 两张表,表结构完全相同,其中字段N多,行也N多。怎样查询出AB中的行是否完全一样?并且查询出不一样的行。(注:AB两表大部分数据相同,但也有少量不同,且不一定是哪个字段的数据不同)

答案2:
设表有三个字段,先将两个字段再加入一个同名不同值的字段联合,再对联合表按原有全部字段分组,取计数为1的记录为两表不同的记录.
select fielda,fieldb,fieldc from (select *,a='a' from tablea union select *,a='b' from tableb) a group by fielda,fieldb,fieldc having count(1)=1
===========================
答案一:
转换所有字段为字符型,合并成一个字段以方便比较,然后将两个表中独有的数据集分别取出然后连接:
SELECT * FROM A
WHERE
CONVERT(VARCHAR,FIELDA)+
CONVERT(VARCHAR,FIELDB)+
CONVERT(VARCHAR,FIELDC)
NOT IN
(SELECT
CONVERT(VARCHAR,FIELDA)+
CONVERT(VARCHAR,FIELDB)+
CONVERT(VARCHAR,FIELDC)
FROM B
)
UNION
SELECT * FROM B
WHERE
CONVERT(VARCHAR,FIELDA)+
CONVERT(VARCHAR,FIELDB)+
CONVERT(VARCHAR,FIELDC)
NOT IN
(SELECT
CONVERT(VARCHAR,FIELDA)+
CONVERT(VARCHAR,FIELDB)+
CONVERT(VARCHAR,FIELDC)
FROM A
)

您好,我现在也遇到这个问题了,你能不能教教我了,我是一名小小的菜鸟

select * from A minus sele