c# - SQL Server 2000 中的表差异

标签 c# algorithm sql-server-2000

我正在使用 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/

相关文章:

c# - 对列类型感到困惑

algorithm - 在 Ada 中实现 Kruskal 算法,不知道从哪里开始

sql - 如何在 sql-server View 中选择 1 作为位?

SQL Server 2000 到 SQL Server 2008 R2 迁移

c# - 如何执行 ALTER TABLE 查询?

c# - Discord C# Bot - 删除最新消息

c++ - C++ 中的数据结构

sql-server - 在列的尾部添加额外的空格

c# - 添加自定义 SoapClient header

algorithm - 最小化 SOP 形式 bool 函数的方法