簡體   English   中英

使用 SQL 查詢組合來自兩個相同表的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM