我正在使用SQL Server 2000,并且给出了一组数据(具有唯一ID),我想弄清楚数据库中包含行的差异,并在唯一ID上进行匹配。我也试图尽可能保持灵活性。
我可以在前端使用C#/ VB来获取参数,甚至可以返回内容。也许传递XML并获得XML作为回报?
例如,我想要一个调用的函数:
// returns the columns that are different
func( A, B, C ) {
}
有什么想法吗?
答案 0 :(得分:3)
有一个很酷的技巧可以用UNION
:
SELECT MAX(tbl) AS TABLE_NAME, unique_key
FROM (
SELECT 'table1' AS tbl, unique_key
FROM table1
UNION ALL
SELECT 'table2' AS tbl, unique_key
FROM table2
) AS X GROUP BY unique_key
HAVING COUNT(*) = 1
这将显示一侧或另一侧具有另一侧没有的行。
显然,这可以扩展到做得更多。
或者,您可以执行INNER JOIN
(匹配数据不同的键),LEFT JOIN
(一侧缺少密钥)和RIGHT JOIN
(另一方面密钥丢失)和UNION
他们在一起。
我实际上有一个实用程序SP(它使用一种或另一种方法,具体取决于您需要的选项),它将比较任何两个表,并具有用于设置哪些列被视为键的一部分,哪些列要忽略,限制的选项它可以选择将差异写入表中。
答案 1 :(得分:2)
答案 2 :(得分:0)
是的,同意Marc,一个专业工具效果最好,类似于Volpet Table Diff的SQL Server