SQL UNION 和 UNION ALL 操作符

2022-01-15 02:30:56 字數 2091 閱讀 7760

總結一下sql中的連線運算子!union和union all都是用來連線sql 查詢語句的!

要點一:union 內部的 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 select 語句中的列的順序必須相同,就比如,第一條語句查詢的是姓名和年齡分別是nvarchar和int型別的,那麼聯合的語句查詢的字段也應該是同樣的型別,和順序。

要點二:預設地,union 操作符選取不同的值(就是載入的都不一樣,不會有重複的資料,如果有兩條資料一模一樣,就只會出現一條資料)。如果想得到所有資料,請使用 union all(all不就是所有的意思嘛!)

要點三:union 查詢結果集中的列名總是等於 union 中第乙個 select 語句中的列名,意思就是兩條語句查詢的總資料的列名按照第一條查詢語句走,比如兩條查詢的字段都一樣,但是第一條查詢語句把字段重新命名了(select name as 姓名 from 表),這時第一列的名字就不是name了,而是被重新命名的:「姓名」。

**例項:

這裡用兩張表,一張學生表 一張教師表!字段分別是:主鍵  姓名(老師或學生)年齡 生日。

**語法:

select sname,age from db_students  --

第一條語句查詢學生的姓名和年齡

union

select tname,age from db_teachers --

第二條語句查詢老師的姓名和年齡

執行結果:

查詢到結果是:學生所有資料和老師所有資料,可以看出,老師學生總資料的一列的列名為sname,因為第一條查詢語句用的sname。下邊將資料修改一下,讓有重複的資料,再用上邊**執行看結果

將兩張表都修改一條資料為:姓名為:小明,年齡為:15,但結果只出現一條小明的資料。

結果為:

聯合的兩個語句,型別要相同,順序要相同,如果不相同,就無法執行,看**:

select sname,age,bitthday from db_students  --

第一條語句查詢學生的姓名和年齡和生日

union

select tname,age from db_teachers --

第二條語句查詢老師的姓名和年齡

報錯:

union會去重,union all不會,看**:

兩條同樣的語句,查詢全表,但是如果用union連線,就會只出現三條資料:

而如果用union all的話就還會出現六條資料,在效率上union all肯定要比union高的,因為少了去重這一步!

資料分析之sql UNION與UNION ALL

union操作符用於合併兩個或多個select語句的結果集。注意 union內部的select語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條select語句中的列的順序必須相同。sql union語法 select column name s from table name1 un...

SQL Union和Union All的使用方法

union指令的目的是將兩個sql語句的結果合併起來。從這個角度來看,我們會產生這樣的感覺,union跟join似乎有些許類似,因為這兩個指令都可以由多個 中擷取資料。union的乙個限制是兩個 sql 語句所產生的字段需要是同樣的資料種類。另外,當我們用 union這個指令時,我們只會看到不同的資...

sql union和union all的用法及效率

union指令的目的是將兩個sql語句的結果合併起來。從這個角度來看,我們會產生這樣的感覺,union跟join似乎有些許類似,因為這兩個指令都可以由多個 中擷取資料。union的乙個限制是兩個sql語句所產生的字段需要是同樣的資料種類。另外,當我們用 union這個指令時,我們只會看到不同的資料值...