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