[英]Combining data from Two Identical tables using SQL query
我們有幾個具有相同結構的不同表。 目標是每天將每個人的數據放入一個主表中。
在此過程中,我們還需要添加兩列,一列用於串行另一列,以跟蹤此記錄來自哪個表(例如 table1、table2 等)
有一個像 CustomerID 這樣的通用唯一列來連接這些表。 你認為最好的方法是什么。
我對你使用的標簽一無所知,只知道一些 Oracle SQL。
你描述的方式,看起來UNION
可能會有所幫助。
創建視圖為
create or replace view v_data as
select 'tab 1' source_table,
id,
name,
address
from table_1
union
select 'tab 2' source_table,
id,
name,
address
from table_2;
你說你需要一個“序列號”; 你會使用類似“序列”的東西(在 Oracle 中,它是一個對象 - 一般來說 - 每次從它獲取時都返回不同的值):
create sequence seq_tab;
最后,要將行插入到“主”表中,您需要
insert into master
(source_table,
serial,
id,
name,
address
)
select v.source_table,
seq_tab.nextval,
v.id,
v.name,
v.address
from v_data v
where (v.source_table, v.id) not in (select a.source_table, a.id
from master a
)
where
子句用於跳過已經插入到master
表中的行。
這樣的原則應該有效。 您需要的語法以及serial
列的來源可能不同(我不知道您的數據庫是否支持序列,或提供類似的東西)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.