我正在使用 SQL Server 2000,给定一组数据(具有唯一 ID),我想找出数据库中行的差异,匹配唯一 ID。我也尽量保持它的灵 active 。
我可以在前端用C#/VB来取参数,甚至返回东西。也许传入 XML 并返回 XML?
例如,我想要一个调用的函数:
// returns the columns that are different
func( A, B, C ) {
}
有什么想法吗?
最佳答案
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(它使用一种或另一种方法,具体取决于您需要的选项),它将比较任意两个表,并具有设置哪些列被视为键的一部分、哪些列要忽略、限制的选项每一边到一个子集,等等。它甚至可以选择将差异写入表格。
关于c# - SQL Server 2000 中的表差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1494580/