mysql 如何识别具有匹配列名的两个SQL表之间的数据不匹配?[关闭]

w8biq8rn  于 2023-06-04  发布在  Mysql
关注(0)|答案(1)|浏览(210)

已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。

1小时前关闭
Improve this question
我有两个来自两个不同来源的输出表,其中两个表中的所有列名都相同。
我需要对两者进行数据验证;两个表中的数据应该完全匹配,如果不是,则哪个部分不匹配以及为什么不匹配。
任何人都可以请建议sql查询做数据验证。
我试着交叉,除了和工会都在一起,但它导致了一些行,但我不知道他们在哪里不匹配,为什么!

rekjcdws

rekjcdws1#

您可以比较每个表中的数据,并仅返回不匹配的行:

SELECT * FROM table1 FULL OUTER JOIN table2 ON table1.column1 =table2.column1
    AND table1.column2 = table2.column2 AND table1.column3 = table2.column3
    WHERE table1.column1 IS NULL OR table2.column1 IS NULL;

您可以修改此查询以在联接条件中包括其他列,具体取决于表中的列数。
然后,您可以使用EXCEPT运算符来比较每个表中的数据。首先选择表1中不在表2中的所有行,然后选择表2中不在表1中的所有行。UNION ALL运算符将这两个查询的结果组合在一起,以显示两个表中所有不同的行。
下面是如何执行此操作的示例:

SELECT * FROM table1 EXCEPT SELECT * FROM table2;
    UNION ALL
    SELECT * FROM table2 EXCEPT SELECT * FROM table1;
    This query first selects all rows from `table1` that are not in `table2`, and then selects all rows from `table2` that are not in `table1`. The `UNION ALL` operator combines the results of these two queries to show all the rows that are different between the two tables.

相关问题