LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL常用算法-两张相同格式表查找一致/不一致数据

admin
2024年3月30日 12:55 本文热度 552

实际项目中,存在这么一种场景,测试环境测试完成后,搬迁至正式环境重新取数,但是需要确定正式环境数据与测试环境完全一致,我们可以比较两张表中是否存在不一致数据,如果查询不出,即表示正式环境数据可用。


假设我们有两张表,分别为table1和table2,且它们具有相同的字段结构(例如都有字段A, B, C)。为了找出这两张表中完全一致的数据和完全不一致的数据,我们可以分别进行如下操作:


查找完全一致的数据:

-- 定义一个临时表,存储table1的所有数据以及对应的表名

CREATE TEMPORARY TABLE temp_table1 AS

SELECT *, 'table1' as source FROM table1;


-- 同理,定义一个临时表,存储table2的所有数据以及对应的表名

CREATE TEMPORARY TABLE temp_table2 AS

SELECT *, 'table2' as source FROM table2;


-- 找出在两个表中完全一致的数据

SELECT *

FROM (

    SELECT * FROM temp_table1

    UNION ALL

    SELECT * FROM temp_table2

) AS combined_tables

GROUP BY A, B, C

HAVING COUNT(*) = 2;

上述SQL首先创建了两个临时表并标记来源,然后通过UNION ALL合并所有数据,最后通过GROUP BY和HAVING子句筛选出在两个表中都出现过的(即完全一致的)记录。


查找不一致的数据:

这里假设为在一张表中存在的记录,在另一张表中不存在。

-- 查找只存在于table1但不在table2中的记录

SELECT * FROM table1

WHERE NOT EXISTS (SELECT 1 FROM table2 WHERE table2.A = table1.A AND table2.B = table1.B AND table2.C = table1.C);


-- 查找只存在于table2但不在table1中的记录

SELECT * FROM table2

WHERE NOT EXISTS (SELECT 1 FROM table1 WHERE table1.A = table2.A AND table1.B = table2.B AND table1.C = table2.C);

以上SQL分别查询了在table1中但不在table2中的记录,以及在table2中但不在table1中的记录,这就是我们所说的“完全不一致”的数据。


该文章在 2024/3/30 12:55:50 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved