需要查询来显示比较表中不匹配的数据

问题描述 投票:0回答:1

我有 2 个表:tab_Def 和 tab_Prod,具有相同的列和相同的数据。 表 tab_Def 是包含模型数据的默认表。表 tab_Prod 是一个生产表,可能会对其进行一些更新,但需要在当天结束时与表 tab_Def 匹配。这些表中一列中的某些数据是重复的,但与另一列组合时会有所不同,如下所示:

tab_Def:

col_1 col_2
101 ABC
102 ABC
101 XYZ

tab_Prod:(发布更新)

col_1 col_2
-101 ABC
102 ABC
-101 XYZ

我有以下查询,但它会将每一行与所有行进行比较,而不是仅显示不匹配的数据行,而是显示数字不匹配的所有行。

select a.col_1, a.col_2, b.col_1
from tab_Def a, tab_Prod b
where a.col_2=b.col_2
and a.col_1<>b.col_1
group by a.col_2, a.col_1, b.col_1
order by a.col_1, b.col_1, a.col_2;

我需要比较两个表并在结果中获取不匹配的行(col_1 -101),如下所示:

预期结果:

col_1 col_2 col_1
101 ABC -101
101 XYZ -101

我应该如何编辑我的查询?

sql mysql plsql compare plsqldeveloper
1个回答
0
投票

根据您的数据示例,这看起来很简单,

select td.col_1,
       td.col_2,
       tp.col_1
from tab_Def td 
inner join tab_Prod tp on td.col_2=tp.col_2
where tp.col_1 = concat('-',td.col_1);

结果,

col_1   col_2   col_1
 101     ABC    -101
 101     XYZ    -101

参见示例

© www.soinside.com 2019 - 2024. All rights reserved.