自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

多個(gè)MySQL表結(jié)果集組合

數(shù)據(jù)庫 MySQL
如果將MySQL兩個(gè)或更多查詢的結(jié)果組合為單個(gè)結(jié)果集,該結(jié)果集包含聯(lián)合查詢中的所有查詢的全部行,應(yīng)該怎么做呢?閱讀下文,您就可以找到答案。

MySQL表結(jié)果集相信大家都比較了解,下面就為您介紹多個(gè)MySQL表結(jié)果集組合的幾種方法,希望可以讓您對(duì)MySQL表結(jié)果集有更深的了解。

select * from table2
union all
select * from table2

select * from table2 union select * from table2

在MS-SQL如果將兩個(gè)或更多查詢的結(jié)果組合為單個(gè)結(jié)果集,該結(jié)果集包含聯(lián)合查詢中的所有查詢的全部行,常用的方法如下:

一.   使用union 或union All語句
1.   union 與 union all語句的區(qū)別
Ø UNION 組合多個(gè)表(或結(jié)果集)并將其作為單個(gè)結(jié)果集返回;
Ø UNION ALL 在結(jié)果中包含所有的行,包括重復(fù)行。
Ø 也就是說,使用UNION組合兩個(gè)表時(shí),將重復(fù)的記錄刪除;而使用UNION ALL組合兩多個(gè)表時(shí),不考慮結(jié)果集中是否存在重復(fù)記錄。
2.   使用 UNION 運(yùn)算符時(shí)請(qǐng)注意:
Ø 所有查詢中的列數(shù)和列的順序必須相同。
 在使用 UNION 運(yùn)算符組合的語句中,所有顯示列表的數(shù)目必須相同(列表內(nèi)容可以包括:列名、算術(shù)表達(dá)式、聚合函數(shù)等);
Ø 數(shù)據(jù)類型必須兼容。
 在使用 UNION 組合的結(jié)果集中的相應(yīng)列必須具有相同數(shù)據(jù)類型,或者兩種數(shù)據(jù)類型之間存在隱性數(shù)據(jù)轉(zhuǎn)換,或提供了類型轉(zhuǎn)換。例如,在datetime 數(shù)據(jù)類型的列和 binary 數(shù)據(jù)類型的列之間不可能存在 UNION 運(yùn)算符,除非提供了顯式轉(zhuǎn)換,而在 money 數(shù)據(jù)類型的列和 int 數(shù)據(jù)類型的列之間可以存在 UNION 運(yùn)算符,因?yàn)樗鼈兛梢赃M(jìn)行隱性轉(zhuǎn)換。
Ø 用 UNION 運(yùn)算符組合的各語句中對(duì)應(yīng)的結(jié)果集列出現(xiàn)的順序必須相同,因?yàn)?UNION 運(yùn)算符是按照各個(gè)查詢給定的順序逐個(gè)比較各列。
3.   與其它 Transact-SQL語句一起使用 UNION 語句時(shí),應(yīng)注意:
Ø 如果在有UNION的語句中使用INTO語句,則只能在最終表(或結(jié)果集)中使用,如果要在單個(gè)表(或結(jié)果集)中使用INTO語句,MS-SQL將會(huì)提示錯(cuò)誤;
錯(cuò)誤語句:Select AID,AName,ADemo Into From ATable Union All Select BID,BName,BDemo Into From Btable
Ø 只有在 UNION 語句的結(jié)尾,才允許使用 ORDER BY 和 COMPUTE 子句以定義最終結(jié)果的順序或計(jì)算匯總值。不能在組建 UNION 語句的單獨(dú)查詢中使用這些子句。
錯(cuò)誤語句:
Select AID,AName,ADemo From ATable order by AID
Union All
Select BID,BName,BDemo From BTable Order By BID  
可以這樣寫:
Select * From
(Select AID,AName,ADemo From ATable Union All Select BID,BName,BDemo From BTable) a
Order By a.AID
也可以這樣寫:
Select AID,AName,ADemo From ATable
Union All
Select BID,BName,BDemo From BTable
  Order By AID
   此處之所以按AID來排序,是因?yàn)镸S-SQL中將最后的結(jié)果表中的第一列命名為AID。某些DBMS的系統(tǒng)并不對(duì)使用不同列名的查詢的表列命名,這樣就不能使用Order By 列名的方式來排序,不過可以引用結(jié)果表中列的順序來排序,例如:Order By 1,則相當(dāng)于Order By AID
Ø GROUP BY 和 HAVING 子句只能在單獨(dú)的查詢中使用;它們不能用來影響最終的結(jié)果集。
Ø UNION 運(yùn)算符可用于 INSERT 語句中。
 FOR BROWSE 子句不能在包含 UNION 運(yùn)算符的語句中使用。(FOR BROWSE使用及說明可以參考SELECT語句的說明)
   注意:某些DBMS系統(tǒng)在由UNION組合查詢的Select子句中不允許使用函數(shù)和表達(dá)式。


二.使用except 或 INTERSECT 運(yùn)算符
與UNION相似,except 或 INTERSECT 運(yùn)算符也可以將多個(gè)表(或結(jié)果集)組合生成一個(gè)新表(或結(jié)果集),只是結(jié)果不同而已。
1.   Except運(yùn)算符
和 UNION 指令類似, Except也是對(duì)兩個(gè) SQL 語句所產(chǎn)生的結(jié)果做處理的。不同的地方是Except在每一個(gè)表(或結(jié)果集)與第二個(gè)表(或結(jié)果集)比較前,已從每一個(gè)表的結(jié)果集中清除了所有重復(fù)的信息。也就是從Except運(yùn)算所得到的結(jié)果集絕不會(huì)包含重復(fù)的記錄(行)。
例如:我們要在Table_A(學(xué)生信息表)與Table_B(學(xué)生必修課完成信息表)中找出未完成的學(xué)生信息
   Select * From Table_A
   Except
   Select * From Table_B
注意:許多DBMS系統(tǒng)不支持EXCEPT運(yùn)算符,則此時(shí)不得不使用Left Outer Join運(yùn)算符來實(shí)現(xiàn)。而在Oracle中的Minus與EXCEPT相似。
2.  INTERSECT運(yùn)算符
和 UNION 指令類似, INTERSECT 也是對(duì)兩個(gè) SQL 語句所產(chǎn)生的結(jié)果做處理的。不同的地方是,UNION 是聯(lián)集,而 INTERSECT 是交集。也就是說,INTERSECT生成的結(jié)果集是多個(gè)表或結(jié)果集所共有的記錄(行)。
   Select AID,AName,ADemo From ATable
   INTERSECT
Select BID,BName,BDemo From Btable

三.使用UNION Corresponding組合來自兩個(gè)或多個(gè)與UNION不兼容的表中的行
例如:有兩個(gè)表
   Create Table Table_A(ID int,office int,address varchar(20),department char(5),pay money)
   Create Table Table_B(office int,ID int,address varchar(20),department char(5))
   可以使用UNION Corresponding來獲取兩個(gè)表中有共同列名的列中數(shù)據(jù):
   Select * From table_A UNION Corresponding Select * From Table_b
   注意:并不是所有的DBMS都支持UNION Corresponding運(yùn)算,包括MS-SQL Server

 

【編輯推薦】

MySQL分表處理的實(shí)現(xiàn)方法

MySQL授權(quán)表使用示例

MySQL內(nèi)存表的弊端

教您徹底刪除MySQL注冊(cè)表信息

Mysql User表的權(quán)限字段說明介紹

責(zé)任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2009-09-09 11:14:04

Linq多個(gè)結(jié)果集

2009-11-11 11:00:38

ADO.NET結(jié)果集

2009-11-13 10:42:09

ADO.NET Nex

2009-09-15 15:45:00

Linq聯(lián)合查詢

2019-09-17 15:13:05

MySQLEXPLAIN數(shù)據(jù)庫

2011-08-23 10:14:09

JDBC更新計(jì)數(shù)行調(diào)用存儲(chǔ)過程SQL Server

2010-10-15 11:05:31

MYSQL查詢結(jié)果

2009-09-09 10:58:58

Linq結(jié)果集形狀

2010-11-24 10:52:57

Mysql字符集

2012-06-07 09:21:55

ibmdw

2022-06-07 07:58:16

流程解耦封裝

2010-07-14 15:22:48

SQL Server

2010-01-08 13:23:38

ibmdwInfoSphere

2009-09-17 10:27:55

linq存儲(chǔ)過程

2011-08-29 15:52:19

SQL ServerMybatis存儲(chǔ)過程

2009-07-08 17:42:33

JDBC存儲(chǔ)過程

2020-04-14 11:01:52

5G運(yùn)營商網(wǎng)絡(luò)

2011-08-18 17:32:40

Oracle存儲(chǔ)過程利用游標(biāo)返回結(jié)果集

2010-11-25 14:45:19

MySQL查詢結(jié)果

2010-10-12 13:42:11

MySQL單列索引
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)