我是 SQL 新手。我正在尝试检查 2 个表(10k 加行)是否存在不一致的数据。例如,两个表都有一个“id”和“price”列,我想知道当 id 相等时价格是否也相等。我想创建一个输出,准确地告诉我哪个 id 的价格不同/不一致。我必须做 3 次检查,其中 1a、1b、1c 都在不同的服务器上。
table1 - table1a
table1 - table1b
table1 - table1c
这是使用纯 SQL 还是使用编程语言 + SQL(python 与 pyodbc 或 java 与 jdbc 等)更有效地完成。由于我是 SQL 新手,我不知道这对于纯 SQL 来说是多么微不足道。
假设您可以从其中一台服务器访问所有三台服务器,您可以在 SQL 中轻松完成此操作。当您将问题标记为“sql-server”(这是专门针对 Microsoft SQL Server 的标签)时,我不确定您是否指的是 Microsoft SQL Server,因为您提到了 Python 和 Java,所以我不会详细说明设置链接服务器或远程查询。
但总的来说,这是比较两个表并仅获取差异的 ANSI SQL 方式(因此这适用于 Microsoft SQL Server、Oracle SQL、MySQL、PostgreSQL 等):
如果你想要一个数据集结合所有三台服务器的差异,你可以这样做:
以上使用
UNION ALL
运算符将所有 3 个数据集作为单个数据集返回。根据您认为这是 Microsoft SQL Server 的评论,您可以考虑使用链接服务器和
OPENQUERY
. 此外,这些资源对于设置对远程服务器的访问特别有用:要回答您的主要问题,简而言之,是的,这是一个完美的数据问题,可以在 SQL 中纯粹简单地完成。