2021年6月20日 星期日

SQL Server UNION with different column names

最近幫忙調整資料庫,遇到了一個沒看過的寫法,心中產生疑問,自己實務上確實沒這樣寫過

,所以當下以為應該會有問題,但是,其實這段語法已經運作好幾年了,驚訝之餘,也紀錄自

己的孤陋寡聞。當 SQL UNION 與 UNION ALL 欄位名稱不同時,後者會追隨前者的欄位名稱



設計兩張 Table 來呈現狀況,分別為 AppMessage 與 SystemMessage,欄位設計內容如下圖


System.Message


AppMessage 



由以上兩張Table 的設計來看,可看出 System.Message 資料的 Msg 欄位與 AppMessage

資料表的 Name 欄位名稱不同


兩張表的資料內容如下


System.Message


AppMessage



接下來使用 UNION 將兩張表的內容合併起來,且不使用別名欄位,語法如下


得到結果



由上面可得,UNION 或 UNION ALL 來處理相關資料表時,欄位名稱會依據第一

結果 Select 出來的欄位名稱為主,即使後方結果的欄位名稱沒有特別使用別名


若是一般,都會使用別名來處理原本設計欄位名稱不同的問題,如下



結論:

我還是會使用別名的設計方式讓欄位一致,除了避免誤會之外,後續的為戶調整也方便施工

,誰又能保證那些花式語法在調整時會不會被改錯呢?


參考:

沒有留言:

張貼留言