如何比較Oracle不同資料表內的Data?
我在Oracle資料庫內有兩個資料表Table1,Table2,其欄位架構內容都是一模一樣。例如:Talbe1:欄位有 R1,R2,R3,R4~R10。Talbe2:欄位也有 R1,R2,R3,R4~R10。我要比較這兩個資料表內的資料,有那些是不一樣的,sql語法要如何下?備註:資料表內的資料,有可能部份欄位資料有差異,也要找出來。
2 Answers
- 1 decade agoFavorite Answer
select t1,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10 from (
select 'table1' as t1,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10 from (
select r1,r2,r3,r4,r5,r6,r7,r8,r9,r10 from table1 minus (select r1,r2,r3,r4,r5,r6,r7,r8,r9,r10 from table1 intersect select r1,r2,r3,r4,r5,r6,r7,r8,r9,r10 from table2))
union all
select 'table2' as t1,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10 from (
select r1,r2,r3,r4,r5,r6,r7,r8,r9,r10 from table2 minus (select r1,r2,r3,r4,r5,r6,r7,r8,r9,r10 from table1 intersect select r1,r2,r3,r4,r5,r6,r7,r8,r9,r10 from table2)))
order by r1,r2,r3,r4,r5,r6,r7.r8,r9,r10,t1;
這樣依照r1......r10先排序,之後放那一個表的名稱即可知道那一筆屬於那一個表了。
2006-10-22 14:29:00 補充:
其實A扣除A與B的交集加上B扣除A與B的交集後,所得到的資料是不可能完全一致的,是故使用UNION ALL 或UNION 的意義是一樣的。
Source(s): 我學習sql語言約略一年半左右,這是我的理解,可能不是最佳solution