繁体   English   中英

找出在SQL Server中比较两个表时更改的列

[英]Find out the columns which got changed when comparing two tables in sql server

我有一个表TableA,其中有10列,大约有4000行。 完成一些计算后,表中进行了一些更改。 为了获得这些更改,我首先在计算之前进行备份,然后在计算之后进行备份。 所以现在我有2个表TableA_backup1和TableA_backup2。 现在,我需要了解使用上述2个表在行中哪些列发生了具体更改。

有什么帮助吗?

如果您只需要一个行和列的“矩阵”,并且每个单元格中的0/1或true / false,指示一列是否已更改,那么您可以简单地通过主键将两个表连接起来:

SELECT
    CASE WHEN t1.col1 = t2.col1 THEN 0 ELSE 1 END AS col1,
    CASE WHEN t1.col2 = t2.col2 THEN 0 ELSE 1 END AS col2,
    ...      -- other columns
FROM TableA_backup1 t1
INNER JOIN TableA_backup2 t2
    ON t1.pk = t2.pk
ORDER BY
    t1.pk;

这没有考虑到从一个备份快照到另一个备份快照可能丢失或增加了行的可能性。 但是,在这种情况下,如果两行根本不匹配,那么我们无论如何都无法真正比​​较列值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM