Sql 当两列中的值不';不匹配
表1:Sql 当两列中的值不';不匹配,sql,oracle,Sql,Oracle,表1: onode_c, dnode_c, dist1 表2: onode_c, dnode_c, dist2 我需要一个返回的查询 onode_c, dnode_c, dist1, dist2 对于dist1和dist2在表1和表2中不匹配的记录 select a.onode_c, a.dnode_c, trunc(a.dist1), trunc(b.dist2) from table1 a, table2 b where a.onode_c = b.onode_c and a.dno
onode_c, dnode_c, dist1
表2:
onode_c, dnode_c, dist2
我需要一个返回的查询
onode_c, dnode_c, dist1, dist2
对于dist1
和dist2
在表1和表2中不匹配的记录
select a.onode_c, a.dnode_c, trunc(a.dist1), trunc(b.dist2)
from table1 a, table2 b
where a.onode_c = b.onode_c and a.dnode_c = b.dnode_c and trunc(a.dist1) != trunc(b.dist2);
上述查询多次返回相同的记录。请尝试以下语句:
select a.onode_c, a.dnode_c, trunc(a.dist), trunc(b.dist2) from table1 a
left join table2 b on a.onode_c = b.onode_c and a.dnode_c = b.dnode_c
where trunc(a.dist1) != trunc(b.dist2);
尝试使用
选择不同的
可能尝试以下方法:
select DISTINCT a.onode_c, a.dnode_c, trunc(a.dist1), trunc(b.dist2)
from table1 a, table2 b
where a.onode_c = b.onode_c and a.dnode_c = b.dnode_c and trunc(a.dist1) != trunc(b.dist2);
trunc(b.f1)
??我在表2中没有看到列f1
。另外,dist
列…对不起,'trunc(a.dist),trunc(b.f1)'应该是trunc(a.dist1),trunc(b.dist2)-在修改原始查询以使其简单化时错过了此选项。(onode_c,dnode_c)
是一个或两个表上的唯一键还是主键?如果只有一个,哪一个?我假设这对(onode\u c,dnode\u c)
在至少一个表上不是唯一的,因为您要报告多行。如果一个表中的给定值(onode_c,dnode_c)
,另一个表中有多个值,其中trunc(a.dist)!=trunc(b.dist2)
对于某些行为true,但对于其他行为false。是否应该包含节点对的该值?所发布的表没有f1
和dist
columns@IswantoSan那么OP怎么说上面的查询多次返回相同的记录呢???我只是根据OP的评论编辑了这个问题…你也应该修改你的答案…)@Jeba:也许你可以:)