首页 > 解决方案 > 比较 ROW COUNT 的结果

问题描述

我在同一台服务器上有 2 个数据库,我需要比较每个数据库的寄存器,因为其中一个数据库没有导入所有信息

我试图做一个 ROW 计数,但它不起作用

目前我正在做大约 100,000 行的包,并在 Excel 中查找它们。

假设我想要一个查询,对表 A 中的每个 ID 进行计数,然后比较每个 ID 的计数结果 VS TABLE B 计数,因为它们是相同的 ID,所以计数应该相同,我希望这会给我带来计数之间存在任何不匹配的 ID。

标签: sqlsql-serverselect

解决方案


这个问题很模糊,但也许这个 SQL 代码可能会帮助你朝着正确的方向前进。

它从数据库 1 中获取每个 ID 的 ID 和计数,从数据库 2 中获取 ID 和 ID 的计数,并将它们进行比较,列出计数不同的所有行。

WITH DB1Counts AS (
    SELECT ID, COUNT(ID) AS CountOfIDs
    FROM DatabaseOne.dbo.TableOne
    GROUP BY ID
), DB2Counts AS (
    SELECT ID, COUNT(ID) AS CountOfIDs
    FROM DatabaseTwo.dbo.TableTwo
    GROUP BY ID
)
SELECT a.ID, a.CountOfIDs AS DBOneCount, b.CountOfIDs AS DBTwoCount
  FROM DB1Counts a
       INNER JOIN DB2Counts b ON a.ID = b.ID
 WHERE a.CountOfIDs <> b.CountOfIDs 

此 SQL 使用“Database.Schema.Table”表示法从特定 ID 中进行选择。因此,将“DatabaseOne”和“DatabaseTwo”替换为您的两个数据库的名称。当然,用您的表格名称替换 TableOne 和 TableTwo(我假设它们是相同的)。这设置了两个选择,每个数据库一个,按 ID 分组以获取每个 ID 的计数。然后它在 ID 上连接这两个选择,并返回计数不同的所有行。


推荐阅读