程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> sql union all 語法

sql union all 語法

編輯:MySQL綜合教程

sql union all 語法
表名:table
字段:id  username ytime
需要實現的結果是:
查詢1:
   select top 5 * from table where id>20 order by id asc
查詢2:
   select top 5 * from table where id<20 order by id desc
並且再將查詢1和查詢2之和,再按照id的倒序。原以為:查詢2好辦,本來就倒序了,並且都小於20,所以這個不需要改動的。現在需要再將查詢1進行一次排序就行了。
於是寫了一個sql語句:
select * from (select top 5 * from table where id>20 order by id asc) order by id desc
union all
select top 5 * from table where id>20 order by id asc
運行的結果居然是:id>20的那5條記錄沒有倒序。

必須換種寫法了:
select * from (select top 5 * from table where id>20 order by id asc
union all
select top 5 * from table where id>20 order by id asc) order by id desc

詳細說明

union
union 命令用於從兩個表中選取相關的信息,很類似 join 命令。不過,當使用 union 命令時,所有被選取的列的數據類型應該是相同的。

注釋:如使用 union,那麼只有不同的值會被選取。

sql statement 1 union sql statement 2
下面的例子中使用的原始表:
employees_china:
e_id e_name
01 zhang, hua
02 wang, wei
03 carter, thomas
04 yang, ming

employees_usa:
e_id e_name
01 adams, john
02 bush, george
03 carter, thomas
04 gates, bill

使用 union 命令
實例
列出所有在中國和美國的不同的雇員名:

select e_name from employees_china union select e_name from employees_usa
結果
e_name
zhang, hua
wang, wei
carter, thomas
yang, ming
adams, john
bush, george
gates, bill

注釋:這個命令無法列出在中國和美國的所有雇員。在上面的例子中,我們有兩個名字相同的雇員,他們當中只有一個人被列出來了。union 命令只會選取不同的值。

union all
union all 命令和 union 命令幾乎是等效的,不過 union all 命令會列出所有的值。

sql statement 1 union all sql statement 2
使用 union all 命令
實例:
列出在中國和美國的所有的雇員:

select e_name from employees_china union all select e_name from employees_usa
結果
e_name
zhang, hua
wang, wei
carter, thomas
yang, ming
adams, john
bush, george
carter, thomas
gates, bill

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved