SQL: 資料匯入他方資料表的標準句型

工作上常常接觸到資料匯入的作業, 面對不同團隊提供的資料複製 SQL 指令稿時, 不時會對團隊成員的創意產生敬佩之意。 其中有些創意很容易理解, 更多時候是完全不理解創意中的明白, 實際執行 SQL 指令稿時, 也常常碰到鍵值重複的錯誤, 其實匯入資料的 SQL 指令是有特定的標準句型可以使用, 可以在團隊成員之間推廣, 內化之後據以作為最佳實務來應用。

NOT EXISTS 標準句型

若將資料匯入簡化為, 將 A, B 來源資料表中之資料, 匯入 C 目標資料表中, 那麼我們可以把資料匯入的 SQL 指令表示為:

INSERT INTO C (C.FIELDs, ...)
    SELECT [A|B].FIELDS, ...
    FROM   A INNER JOIN B ON A.KEYs = B.KEYs
    WHERE  ...
           AND NOT EXISTS (SELECT * FROM C WHERE C.KEYs = [A|B].FIELDs)

只要反覆應用熟練這個句型, 日後碰到資料匯入、複製、搬移等相關工作時, 就絕對不會因為天馬行空的創意, 而寫出令人佩服到五體投地, 並且還執行錯誤的 SQL 指令稿了。

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料