匹配两个不同表中的数据(比较数据)

时间:2017-05-02 14:11:30

标签: sql oracle

我在匹配来自2个不同表的数据时遇到问题。 例 table1:a,b,c,d,e(col) table2:a,d,e,f,g(col)

如何将table1 col a,d,e中的数据与table2 col a,d,e匹配 如果table1中的行与table2中的行匹配,然后停止循环?

在我的脚本中,结果总是在匹配数据时重复(当table1中的数据与其仍未循环的数据匹配时,未与表2中的其他数据锁定)。

select distinct x.a, y.a, x.d, y.d, x.e, y.e 
from table1 x,
     table2 y
where x.a = y.a(+) and x.d = y.d(+) and x.e = y.e(+)
抱歉我的英语不好......

修改

抱歉,我不能用智能手机输入好... 也许是这样..

表1

col a--b--c--d--e
1st_row 'Ryan'--'Sofia'--'Bulgaria'--'January'--'107'
2nd_row 'Dony'--'Vienna'--'Austria'--'March'--'103'
3rd_row 'Ryan'--'Berlin'--'Germany'--'January'--'107'
4th_row 'Dony'--'Milan'--'Italy'--'March'--'103'

表2

col a--d--e--f--g
1st_row 'Ryan'--'January'--'107'--'Travel'--'5'
2nd_row 'Ryan'--'January'--'107'--'Bussiness'--'4'
3rd_row 'Dony'--'March'--'103'--'Bussiness'--'9'
4th_row 'Dony'--'March'--'103'--'Bussiness'--'3'

在我的查询中

select distinct x.a, y.a, x.d, y.d, x.e, y.e
from table1 x,
     table2 y
where x.a = y.a(+) and x.d = y.d(+) and x.e = y.e(+)

结果是

table1 1st_row matched with table2 1st_row
table1 2nd_row matched with table2 3rd_row
table1 3rd_row matched with table2 1st_row (match duplicated)
table1 4th_row matched with table2 3rd_row (match duplicated)

但是我想要的结果是 table1 1st_row与table2 1st_row匹配 table1 2nd_row与table2 3rd_row匹配 table1 3rd_row与table2 2nd_row匹配 table1 4th_row与table2 4th_row

匹配

2 个答案:

答案 0 :(得分:0)


您可以使用以下查询

select distinct x.a, y.a, x.d, y.d, x.e, y.e 
from table1 x
inner join table2 y
on (x.a = y.a(+) and x.d = y.d(+) and x.e = y.e(+));

答案 1 :(得分:0)

抱歉,我不能用智能手机输入好...
也许这样..

表1
col a - b - c - d - e
1st_row'Ryan' - 'Sofia' - '保加利亚' - '1月' - '107'
2nd_row'Dony' - '维也纳' - '奥地利' - '三月' - '103'
第3周年''瑞安' - '柏林' - '德国' - '1月' - '107' 4th_row'Dony' - '米兰' - '意大利' - '三月' - '103'

表2
col a - d - e - f - g
1st_row'Ryan' - '1月' - '107' - '旅行' - '5'
2nd_row'Ryan' - '1月' - '107' - '商务' - '4'
3rd_row'Dony' - 'March' - '103' - 'Bussiness' - '9'
4th_row'Dony' - 'March' - '103' - 'Bussiness' - '3'

在我的查询中
从table1 x,table2 y中选择不同的xa,ya,xd,yd,xe,ye
,其中xa = ya(+)和xd = yd(+)和xe = ye( +) 结果是
table1 1st_row与table2 1st_row匹配
table1 2nd_row与table2 3rd_row匹配
table1 3rd_row与table2 1st_row匹配(匹配重复)
table1 4th_row与table2 3rd_row匹配(匹配重复)


但我想要的结果是
table1 1st_row与table2 1st_row匹配
table1 2nd_row与table2 3rd_row匹配
table1 3rd_row与table2 2nd_row匹配
table1 4th_row与table2 4th_row

匹配