SQL常用算法-两张相同格式表查找一致/不一致数据
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
实际项目中,存在这么一种场景,测试环境测试完成后,搬迁至正式环境重新取数,但是需要确定正式环境数据与测试环境完全一致,我们可以比较两张表中是否存在不一致数据,如果查询不出,即表示正式环境数据可用。 假设我们有两张表,分别为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 编辑过 |
关键字查询
相关文章
正在查询... |