Sql中的並(UNION)、交(INTERSECT)、差(minus)、除去(EXCEPT)詳解


UNION

查詢選修了180101號或180102號課程或二者都選修了的學生學號、課程號和成績。

(SELECT  學號, 課程號, 成績

FROM   學習

WHERE   課程號='180101')

  UNION

(SELECT 學號, 課程號, 成績

FROM 學習

WHERE    課程號='180102')

與SELECT子句不同,UNION運算自動去除重復。因此,在本例中,若只輸出學生的學號,則相同的學號只出現一次。如果想保留所有的重復,則必須用UNION ALL代替UNION,且查詢結果中出現的重復元組數等於兩個集合中出現的重復元組數的和。

 

INTERSECT

查詢同時選修了180101和180102號課程的學生學號、課程號和成績。

(SELECT  學號, 課程號, 成績

FROM   學習

WHERE 課程號='180101')

INTERSECT

(SELECT 學號, 課程號, 成績

FROM 學習

WHERE 課程號='180102')

INTERSECT運算自動去除重復,如果想保留所有的重復,必須用INTERSECT ALL代替INTERSECT,結果中出現的重復元組數等於兩集合出現的重復元組數里較少的那個。

intersect運算 返回查詢結果中相同的部分既他們的交集

 

minus-(oracle)

返回在第一個查詢結果中與第二個查詢結果不相同的那部分行記錄,
即兩個結果的差集
 select * from abc2
    minus
  select * from abc ;

 

EXCEPT

查詢選修了180101號課程的學生中沒有選修180102號課程的學生學號、課程號和成績。

(SELECT  學號, 課程號, 成績

FROM   學習

WHERE  課程號='180101')

EXCEPT

(SELECT 學號, 課程號, 成績

FROM 學習

WHERE   課程號='180102')

EXCEPT運算自動去除重復,如果想保留所有的重復,必須用EXCEPT ALL代替EXCEPT,結果中出現的重復元組數等於兩集合出現的重復元組數之差(前提是差是正值)。

在不支持INTERSECT和EXCEPT運算的DBMS中,必須使用其它方法實現,其中,嵌套查詢是十分有效的一種方法。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM