SQL查询比较表之间的行之间的差异

时间:2018-12-20 21:06:22

标签: sql sql-server

我想知道如何比较两个数据库表记录并将结果返回到单独的表中。

例如,每个表A B C D E F中总共有6列。但是,我只比较A,B和C列中的记录

如果A B C列的每个表中都有匹配项,我希望将结果输出到匹配行的新表(.csv文件等)中

让我举例说明:

在表A中,您可以看到6列,即A B C D EF。该表具有以下行:

Table A

表A

表B也有6列A B C D E F

Table B

从表中您可以看到,在A B&C上只有一行匹配,即xx,PP和dd。

我希望将该行输出到具有该行中所有记录的表,即。 xx PP dd TYH ADF AD

2 个答案:

答案 0 :(得分:1)

不清楚,是要表1还是表2的输出。尽管查询非常简单。

SELECT t.A, t.B, t.C, t.D, t.E, t.F
FROM  TableA t
INNER JOIN TableB tt ON (t.A = tt.A AND t.B = tt.B AND t.C = tt.C)

答案 1 :(得分:1)

很复杂,这是SQL的基础知识...您正在寻找连接条件,例如

select A.*, B.*
from TableA A
inner join TableB B on A.A = B.A and A.B = B.B and A.C = B.C

其中A. *是表A(TableA)中的所有列,而B. *是表B(TableB)中的所有列

编辑:根据您对表A和B单独行的明确要求,请尝试以下操作:

select convert(bit,1) Is_Deleted, A.A, A.B, A.C, A.D, A.E, A.F
from TableA A
inner join TableB B on B.A = A.A and B.B = A.B and B.C = A.C
union all
select convert(bit,1) Is_Deleted, B.A, B.B, B.C, B.D, B.E, B.F
from TableB B
inner join TableA A on A.A = B.A and A.B = B.B and A.C = B.C
order by A, B, C