回覆列表
  • 1 # dtzgk33528

    Oracle資料庫表的聯合查詢包括交叉聯合、等值聯合和不等值聯合、內部聯合與外部聯合:1、交叉聯合:  使你對於“聯合”的概念開始產生最直觀的印象,因為交叉聯合的結果就是兩個表的笛卡爾積。  codeexample:select*fromT1,T2;  假如表1有2條記錄,表2有3條記錄,那麼查詢結果就是2*3=6條記錄。2、等值聯合與不等值聯合:  等值聯合:只顯示錶1中的資料,以及表2中的、存在於表1中的資料。顧名思義,查詢條件/表示式中以等號(“=”)連線。  codeexample:  1selectT1.sectionA,T1.sectionB,T2.sectionCfromT1,T2  2whereT1.sectionA=T2.sectionA(and...);  不等值聯合:與等值聯合查詢類似,只不過在where子句中使用除等號以外的比較符連線,此處不以例詳述。3、內部聯合與外部聯合  內部聯合:產生的結果行數取決於參加聯合的行數,也就是說內部聯合的行數取決於WHERE子句的結果。  codeexample:  1SELECTP.PARTNUM,P.DESCRIPTION,P.PRICE,O.NAME,O.PARTNUM  2FROMPARTPJOINORDERSOONORDERS.PARTNUM=54;  在這裡你使用的語法中的JOINON不是ANSI標準中所指定的,而是我們所使用的直譯器的附加語法,你可以用它來指明是內部聯合還是外部聯合,大多數直譯器對些都進行了類似的擴充,注意這種型別的聯合沒有WHERE子句。4、表的自我聯合:  由於聯合查詢也常被譯為“連線”,因此在有些資料中看到的“自連線”查詢指的也是這個概念。它並無特別之處,是指表1與表2均為同一表名。其用處在於檢查表中資料的一致性。  比如T1表中兩條記錄的sectionA欄位是同值的,這可能是由於資料錄入錯誤造成的,如果按正常資料使用它,可能造成不可預料的災難。  codeexample:  1SELECTF.PARTNUM,F.DESCRIPTION,S.PARTNUM,S.DESCRIPTION  2FROMPARTF,PARTS  3WHEREF.PARTNUM=S.PARTNUM  4ANDF.DESCRIPTION<>S.DESCRIPTION  如果不存在上述異常資料,那麼查詢結果應該為空;否則1條異常記錄對應兩條查詢結果。可以此來檢查資料的一致性。

  • 中秋節和大豐收的關聯?
  • 七點出生是什麼時辰?