a,b兩表結構一樣,a表和b表比較,如果有資料不一樣,則把不一樣的資料儲存到c表。如:
a表資料
6,mixed,nuts,z
b表資料
6,mixed,nuts,c
要把兩條資料都儲存到c表,並且要標記出哪條資料是哪個表的,如:
source type user_id first_name last_name grade
a表 36
mixed nuts z
b表 36
mixed nuts c
source 欄位的意思是:資料**哪個表
type 欄位的意思是:
如果a表有的資料b表沒有,則type=1
。如果b表有的資料a表沒有,則type=2
。如果a表有的資料b表也有,只是有些欄位的值不一樣,則type=3
。按照下列資料,最後c表的結果應該是:
source type user_id first_name last_name grade
a表 36
mixed nuts z
b表 36
mixed nuts c
b表 211
jack fancy a
a,b表結構:
create table a(
user_id integer not
null
,first_name varchar(
20),
last_name varchar(
20),
grade varchar(
20),
constraint a_pkey primary key(user_id)
)c表結構:
create table c(
source varchar(
20) not
null
,type integer not
null
,user_id integer not
null
,first_name varchar(
20),
last_name varchar(
20),
grade varchar(20)
)insert into a(user_id,first_name,last_name,grade)values(1,
'some',
'dude',
'a')
insert into a(user_id,first_name,last_name,grade)values(2,
'other',
'guy',
'b')
insert into a(user_id,first_name,last_name,grade)values(3,
'you are',
'welcome',
'b')
insert into a(user_id,first_name,last_name,grade)values(4,
'what',
'other',
'a')
insert into a(user_id,first_name,last_name,grade)values(5,
'ineed',
'you',
'c')
insert into a(user_id,first_name,last_name,grade)values(6,
'mixed',
'nuts',
'z')
insert into a(user_id,first_name,last_name,grade)values(7,
'kirk',
'land',
'b')
insert into a(user_id,first_name,last_name,grade)values(8,
'bit',
'shooter,'a
')insert into b(user_id,first_name,last_name,grade)values(1,
'some',
'dude',
'a')
insert into b(user_id,first_name,last_name,grade)values(2,
'other',
'guy',
'b')
insert into b(user_id,first_name,last_name,grade)values(3,
'you are',
'welcome',
'b')
insert into b(user_id,first_name,last_name,grade)values(4,
'what',
'other',
'a')
insert into b(user_id,first_name,last_name,grade)values(5,
'ineed',
'you',
'c')
insert into b(user_id,first_name,last_name,grade)values(6,
'mixed',
'nuts',
'c')
insert into b(user_id,first_name,last_name,grade)values(7,
'kirk',
'land',
'b')
insert into b(user_id,first_name,last_name,grade)values(8,
'bit',
'shooter,'a
')insert into b(user_id,first_name,last_name,grade)values(11,
'jack',
'fancy',
'b')
insert
into
c select
*from
(with
t1 as
(select
*from
a minus
select
*from
b),
t2 as
(select
*from
b minus
select
*from
a)select'a
'source,
3type,t1.
*from
t1 where
exists
(select
1from
t2 where
t2.user_id
=t1.
user_id
)union
allselect'a
'source,
1type,t1.
*from
t1 where
notexists
(select
1from
t2 where
t2.user_id
=t1.
user_id
)union
allselect'a
'source,
3type,t2.
*from
t2 where
exists
(select
1from
t1 where
t2.user_id
=t1.
user_id
)union
allselect'a
'source,
2type,t2.
*from
t2 where
notexists
(select
1from
t1 where
t2.user_id
=t1.
user_id
));解決方法:
ORACLE資料庫對比表結構
有時候會有某種需求 需要對比兩個表的表結構是否一致,有時候甚至是整個資料庫所有表的表結構對比.表結構對比無非就是欄位名 字段型別 字段資料型別 以及欄位的順序的對比。如果需要對比表結構,可以通過下面簡單的指令碼實現 m.table name,m.column id,m.column name,m.d...
ORACLE資料庫對比表結構
有時候會有某種需求 需要對比兩個表的表結構是否一致,有時候甚至是整個資料庫所有表的表結構對比.表結構對比無非就是欄位名 字段型別 字段資料型別 以及欄位的順序的對比。如果需要對比表結構,可以通過下面簡單的指令碼實現 select m.owner,m.table name,m.column id,m....
對比兩個資料庫表結構
在專案做好後實施了以後,可能因為需求等原因需要公升級,這時候一般都是在測試系統改好後在更新到正式系統.儲存過程,檢視等可以直接通過全部刪除在建立進行更新,但是表因為正式系統裡已有資料所以無法通過該方式進行更新.只能更改表結構,而這時有可能因為更改的表結構比較多,而出現有的表忘了更新.該程式可以對比兩...