最近幫忙調整資料庫,遇到了一個沒看過的寫法,心中產生疑問,自己實務上確實沒這樣寫過
,所以當下以為應該會有問題,但是,其實這段語法已經運作好幾年了,驚訝之餘,也紀錄自
己的孤陋寡聞。當 SQL UNION 與 UNION ALL 欄位名稱不同時,後者會追隨前者的欄位名稱
設計兩張 Table 來呈現狀況,分別為 AppMessage 與 SystemMessage,欄位設計內容如下圖
System.Message
AppMessage
由以上兩張Table 的設計來看,可看出 System.Message 資料的 Msg 欄位與 AppMessage
資料表的 Name 欄位名稱不同
兩張表的資料內容如下
System.Message
AppMessage
接下來使用 UNION 將兩張表的內容合併起來,且不使用別名欄位,語法如下
得到結果
由上面可得,UNION 或 UNION ALL 來處理相關資料表時,欄位名稱會依據第一
結果 Select 出來的欄位名稱為主,即使後方結果的欄位名稱沒有特別使用別名
若是一般,都會使用別名來處理原本設計欄位名稱不同的問題,如下
結論:
我還是會使用別名的設計方式讓欄位一致,除了避免誤會之外,後續的為戶調整也方便施工
,誰又能保證那些花式語法在調整時會不會被改錯呢?
參考:
沒有留言:
張貼留言