有没有办法使用 SQL 或 EXCEL 跟踪两个表的更改?
Posted
技术标签:
【中文标题】有没有办法使用 SQL 或 EXCEL 跟踪两个表的更改?【英文标题】:Is there a way to track changes on two tables using SQL or and EXCEL? 【发布时间】:2021-10-27 11:58:55 【问题描述】:我有一个问题,希望这里有人可以帮助我。我有 2 个表(旧表和新表),它们的数据非常相似(列数和行数相等),但在某些值上有一些差异。我想跟踪这两个表之间的值(数据)差异。 我的想法是使用 LEFT JOIN 或 INNER JOIN 两者都没有给出我想要的结果。 应该注意的是,通常作为主键的 ID 不包含唯一值(我添加了一个 Serial_Number 列来解决这个问题)。我真的只需要看看已经改变的价值观。从图片中,您会注意到 5 和 6 的 Staff_ID 和 Amount 存在差异。在某些情况下,Staff_ID 相同但 Amount 发生了变化。
方法一:
FROM Database_2
LEFT JOIN Database_1
ON Database_2.Staff_ID = Database_1.Staff_ID```
Approach 2:
```SELECT *
FROM Database_2
INNER JOIN Database_1
ON Database_2.Staff_ID = Database_1.Staff_ID```
Approach 3: (I added a Serial_Number column. This is not even working)
```SELECT Serial_Number, Staff_ID, PT, Price FROM Database_1
EXCEPT
SELECT Serial_Number, Staff_ID, PT, Price from Database_2;```
A minimal reproducible:
创建表 DB1 (
Serial_Number
INT,
Staff_ID
INT,
Price
INT,
Percentage
数字 (3, 2),
Change
VARCHAR(1) 字符集 utf8
);
插入 DB1 值
(1,53441,NULL,0.05,'Y'),
(2,53441,NULL,NULL,NULL),
(3,12855,500,NULL,NULL),
(4,12855,NULL,NULL,'Y'),
(5,2005511,NULL,NULL,'Y'),
(6,839123,1300,NULL,NULL);
创建表 DB2 (
Serial_Number
INT,
Staff_ID
INT,
Price
INT,
Percentage
数字(3, 2),
Change
VARCHAR(1) 字符集 utf8
);
插入 DB2 值
(1,53441,NULL,0.05,NULL),
(2,53441,550,NULL,'Y'),
(3,12855,500,NULL,NULL),
(4,12855,NULL,NULL,'Y'),
(5,2005511,600,NULL,'Y'),
(6,839123,1300,NULL,NULL)
【问题讨论】:
我们对您的表结构完全不了解,请尝试提供两个表中的数据样本以及您所说的差异,即列中数据的差异,或记录数的差异。预期的输出很有帮助 @paulr23 谢谢。我现在已经在问题中澄清了这一点。 【参考方案1】:要查看新行中的行,而不是旧行:
SELECT * FROM new a
WHERE NOT EXISTS (
SELECT 1 FROM old b
WHERE a.Serial_Number = b.Serial_Number
AND a.Staff_ID = b.Staff_ID
AND a.PT = b.PT
AND a.Price = b.Price
)
类似于查看旧的行而不是新的行。
【讨论】:
【参考方案2】:我建议您使用使用 REALLY absolute 引用单元格的 Excel 书籍,因此您可以将“新”粘贴到一张表中,将“旧”粘贴到另一张表中,然后在第三张表中粘贴很容易看出差异。 REALLY absolute 引用的原因是能够在“新”和“旧”工作表中删除/添加行和/或列,而 Excel 仍按单元格的绝对位置比较单元格。在 Excel 中进行比较的另一个优点是,您可以设置一个阈值,当“新”和“旧”中的两个对应值被视为相同时,以忽略由二进制算术引起的微小差异的“误报”。
您可以从LightningGuide.net 下载这样的 Excel 书籍,称为记录列表比较器。
【讨论】:
以上是关于有没有办法使用 SQL 或 EXCEL 跟踪两个表的更改?的主要内容,如果未能解决你的问题,请参考以下文章