SQL中UNION和UNION ALL的區別及用法介紹,僅供參考,如有錯誤,歡迎糾正。 ...
在工作中可能會遇到縱向合併兩個表的數據,這時會用到UNION和UNION ALL關鍵字。
其區別就是:UNION會進行數據的排序和去重,查詢效率低。
UNION ALL沒有進行去重和排序,查詢效率高。
需要註意的是:合併的兩個或多個表需要保證他們欄位的個數相同,否則會報錯。
如:合併Student和Course表
SELECT 學號,姓名,年齡,課程號 FROM Student
UNION ALL
SELECT 課程號,課程名稱,類別,學分 FROM Course;
註意:習慣SQL結尾加分號的,不要在第一條SELECT後加上分號,只需要在最後加就行,我工作時候出現過這種低級的錯誤。
以下是查詢結果。(當然只是為了演示,這是沒有意義的合併,因為欄位和數據不一致)
有時候會有兩表欄位個數不一樣的時候,但有必須合併,那就以起別名的方式自己加缺少的欄位,如
SELECT 學號,姓名,年齡,課程號,Null as 備註 FROM Student
UNION ALL
SELECT 課程號,課程名稱,類別,學分,備註 FROM Course;
結果如下: