Oracle DB 使用子查詢來解決查詢

來源:互聯網
上載者:User

 定義子查詢

• 描述子查詢可以解決的問題類型• 列出子查詢的類型• 編寫單行和多行子查詢 • 子查詢:類型、文法和準則• 單行子查詢:– 子查詢中的組函數– 帶有子查詢的HAVING子句• 多行子查詢– 使用ALL或ANY運算子• 使用EXISTS運算子• 子查詢中的空值 
  • 使用子查詢解決問題
誰的薪金高於Abel 的薪金?子查詢:Abel 的薪金是多少?主查詢:哪些僱員的薪金高於Abel 的薪金? 使用子查詢解決問題假設要編寫一個查詢來找出誰的薪金高於Abel 的薪金。要解決此問題,需要使用兩個查詢:一個查詢用於尋找Abel 的薪金,另一個查詢用於尋找薪金超過該金額的人員。通過組合這兩個查詢,即將一個查詢放在另一個查詢中,可以解決此問題。內部查詢(即子查詢)會返回一個外部查詢(即主查詢)要使用的值。使用子查詢等同於執行兩個連續的查詢,而且將第一個查詢的結果用作第二個查詢中的搜尋值。 
  • 子查詢文法
• 先執行子查詢(內部查詢),再執行主查詢(外部查詢)。• 主查詢會使用子查詢的結果。SELECT select_list FROM table WHERE expr operator(SELECT select_list FROM table);  子查詢是一個SELECT語句,它嵌入到另一個SELECT語句的子句中。通過使用子查詢,可以用簡單的語句構建功能強大的語句。當需要從表中選擇行,而選擇條件卻取決於該表自身中的資料時,子查詢非常有用。可以在許多SQL 子句中使用子查詢,其中包括以下子句:• WHERE子句• HAVING子句• FROM子句在該文法中:operator包括比較條件,例如>、=或IN註:比較條件分為以下兩類:單行運算子(>、=、>=、<、<>、<=)和多行運算子(IN、ANY、ALL、EXISTS)。子查詢通常被稱為嵌套SELECT語句、子SELECT語句或內部SELECT語句。通常先執行子查詢,然後使用其輸出來完善主查詢(即外部查詢)的查詢條件。 
  • 使用子查詢
SELECT last_name, salary FROM employeesWHERE salary >(SELECT salary FROM employees WHERE last_name = 'Abel'); 在樣本中,內部查詢確定了僱員Abel 的薪金。外部查詢會採用內部查詢的結果並根據此結果顯示薪金超過僱員Abel 的所有僱員。 
  • 使用子查詢的準則
• 子查詢必須放在括弧中。• 子查詢放在比較條件的右側可增加可讀性。但是,子查詢可出現在比較子的任意一側。• 在子查詢中可以使用兩類比較條件:單行運算子和多行運算子。對單行子查詢使用單行運算子,對多行子查詢使用多行運算子。 
  • 子查詢的類型
• 單行子查詢:從內部SELECT語句中僅返回一行的查詢• 多行子查詢:從內部SELECT語句中返回多行的查詢註:此外,還有多列子查詢,此類查詢從內部SELECT語句中返回多個列。 
  • 單行子查詢
僅返回一行使用單行比較子 單行子查詢是從內部SELECT語句中返回一行的一種查詢。此類子查詢使用單行運算子。給出了單行運算子的列表。樣本:顯示其職務ID 與僱員141 的職務ID 相同的僱員:SELECT last_name, job_id FROM employeesWHERE job_id =(SELECT job_id FROM employees WHERE employee_id = 141);  
  • 執行單行子查詢
SELECT last_name,job_id, salary FROM employeesWHERE job_id = (SELECT job_id FROM employees WHERE last_name= 'Taylor')AND salary >(SELECT salary FROM employees WHERE last_name= 'Taylor'); 可以將SELECT語句看作一個查詢塊。樣本顯示其職務與Taylor 相同但薪金高於Taylor 的僱員。該樣本由三個查詢塊組成:一個外部查詢和兩個內部查詢。先執行內部查詢塊,產生的查詢結果分別為SA_REP和8600。然後可以處理外部查詢塊,使用內部查詢返回的值來完善其搜尋條件。兩個內部查詢都返回單個值(分別為SA_REP和8600),因此將此SQL 陳述式稱為單行子查詢。註:外部查詢和內部查詢可以從不同的表中獲得資料。 更多詳情見請繼續閱讀下一頁的精彩內容:  

推薦閱讀:

Oracle中from中子查詢執行個體應用

WITH子句:子查詢命名

Oracle子查詢第一行與最後一行相運算

Oracle子查詢詳解

Oracle 10g資料庫基礎之基本查詢語句-下-串連&子查詢

 

  • 1
  • 2
  • 3
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.