資源描述:
《sql except和intersect運算符(比較兩個或多個select語句的結(jié)果并返回非重復(fù)值)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、1.簡介EXCEPT和INTERSECT運算符使您可以比較兩個或多個SELECT語句的結(jié)果并返回非重復(fù)值。2.區(qū)別EXCEPT運算符返回由EXCEPT運算符左側(cè)的查詢返回、而又不包含在右側(cè)查詢所返回的值中的所有非重復(fù)值。INTERSECT返回由INTERSECT運算符左側(cè)和右側(cè)的查詢都返回的所有非重復(fù)值。3.注意事項(1).使用EXCEPT或INTERSECT比較的結(jié)果集必須具有相同的結(jié)構(gòu)。它們的列數(shù)必須相同,并且相應(yīng)的結(jié)果集列的數(shù)據(jù)類型必須兼容(2).INTERSECT運算符優(yōu)先于EXCEPT(3).SELECTINTO必須是包含INTERSECT或EXCEPT運算符的語
2、句中的第一個查詢,用來創(chuàng)建容納最終結(jié)果集的表(4).ORDERBY子句中的列名或別名必須引用左側(cè)查詢返回的列名4.例題:--建立3個表,分別插入數(shù)據(jù)createtableTableA(col1int)insertintoTableAselect1insertintoTableAselect1insertintoTableAselect2insertintoTableAselect3insertintoTableAselect4insertintoTableAselect4insertintoTableAselect5insertintoTableAselectnullins
3、ertintoTableAselectnullcreatetableTableB(col2int)insertintoTableBselectnullinsertintoTableBselect14insertintoTableBselect2insertintoTableBselect3createtableTableC(col3int)insertintoTableCselect1insertintoTableCselect5insertintoTableCselect6--利用EXCEPT--找出TableA表的col1列不存在Tablec表col1列的所有非重復(fù)值S
4、ELECTcol1FROMTableAEXCEPTSELECTcol3FROMTablec結(jié)果如下:col1-----------NULL234--sql2000的版本,用notexists實現(xiàn)EXCEPT的功能SELECTcol1FROMTableAasawherenotexists(SELECTcol3FROMTablecwherea.col1=col3)groupbycol1--sql2000,notin是得不到上述結(jié)果的--空值表示值未知。空值不同于空白或零值。沒有兩個相等的空值。--比較兩個空值或?qū)⒖罩蹬c任何其他值相比均返回未知,這是因為每個空值均為未知。--使用
5、IN或NOTIN比較后返回的所有空值都將返回UNKNOWN。--將空值與IN或NOTIN一起使用會產(chǎn)生意外結(jié)果。SELECTcol1FROMTableAwherecol1notin(SELECTcol3FROMTablec)4groupbycol1結(jié)果如下:col1-----------234--INTERSECT運算符優(yōu)先于EXCEPT--運算步驟是:先運算TableB和TableC的INTERSECT,再和TableA運算EXCEPTSELECTcol1FROMTableAEXCEPTSELECTcol2FROMTableBINTERSECTSELECTcol3FROM
6、TableC結(jié)果如下:col1-----------NULL2345--SELECTINTO的應(yīng)用--SELECTINTO必須是語句中的第一個查詢--我記得SELECTINTO與UNION運算符的使用也是這樣的規(guī)則SELECTcol1into#temFROMTableAEXCEPTSELECTcol3FROMTablecselect*from#tem4droptable#tem結(jié)果如下:col1-----------NULL234--ORDERBY子句--ORDERBY子句中的列名或別名必須引用左側(cè)查詢返回的列名SELECTcol1FROMTableAINTERSECTSE
7、LECTcol3FROMTableCorderbycol1結(jié)果如下:col1-----------154