我想知道在进行容量测试时是否只能从表中获取不匹配的数据集,请看下面的示例:
如果下表是我的目标表,如果数据正确加载,我将执行测试,我会编写一条 SQL 来从源中选择列并对目标表执行减号,如果假设源有 sal
of XXX as 2000 那么这是从源到目标的不匹配,是否可以仅获取 id 和 sal 列作为减号查询的输出。
需要明确的是,如果我有一个包含 100 列的表来测试,负查询将返回所有 100 列,即使 1 列中存在不匹配,因此我只想返回 1 列不匹配的列。
id Name sal
-- ---- ----
1 XXX 1000
2 YYY 2000
3 ZZZ 4000
4 AAA 5000
最佳答案
基于以下假设
源表和目标表都有共同的主键
然后可以使用 case 语句来缩小导致不匹配的确切列的范围
http://sqlfiddle.com/#!2/a78eca/16
select
ST.id,
case
when ST.name!=TT.name then 'Issue in name'
When ST.sal!=TT.sal then 'Issue in Sal'
Else 'OK' END As Check_Column
From source_table ST, Target_table TT
where ST.id=TT.id
and (ST.name!=TT.name OR ST.sal!=TT.sal)
上面的解释是,where 条件将仅过滤掉有问题的行,而 case 语句将告诉哪一行导致不匹配
关于SQL仅获取不匹配的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35004326/