關聯子查詢

關聯子查詢

在關聯子查詢中,對於外部查詢返回的每一行數據,內部查詢都要執行一次。另外,在關聯子查詢中是信息流是雙向的。外部查詢的每行數據傳遞一個值給子查詢,然後子查詢為每一行數據執行一次並返回它的記錄。然後,外部查詢根據返回的記錄做出決策。

基本介紹

  • 中文名:關聯子查詢
  • 外文名: Correlated subquery
  • 定    義:關聯子查詢中是信息流是雙向的
  • 套用學科:計算機技術方法術語
概念,工作方法,

概念

在關聯子查詢中,對於外部查詢返回的每一行數據,內部查詢都要執行一次。另外,在關聯子查詢中是信息流是雙向的。外部查詢的每行數據傳遞一個值給子查詢,然後子查詢為每一行數據執行一次並返回它的記錄。然後,外部查詢根據返回的記錄做出決策。
關聯子查詢與嵌套子查詢不同的是,信息傳播是雙向而不是單向的。在嵌套子查詢中,僅處理內部查詢一次,並向外部查詢傳遞信息——本質上提供相同值或者列出錄入的清單。
但是,內部查詢利用關聯子查詢涉及外部查詢提供的信息,反之亦然。這種說法似乎有點令人混淆,但它可以分為三步進行處理:
1、外部查詢得到一條記錄並傳遞到內部查詢中;
2、內部查詢基於輸入值執行;
3、內部查詢把返回值輸出到外部查詢中,並用這些值結束內部查詢。

工作方法

WHERE子句中的關聯子查詢
在這個特定的查詢中,外部查詢只在WHERE子句中引用內部查詢——它也可以在SELECT清單中包括從內部查詢中獲得的數據。
通常根據自己的意願決定是否希望使用別名,但對關聯子查詢,則必須使用別名。這種查詢在很大程度上顯示了為什麼內部查詢和外部查詢都建立在同一張表上。兩個查詢都從彼此之間獲得信息,因此,如果沒有別名,它們就不會知道用戶對哪張表的數據感興趣。
SELECT清單中的關聯子查詢
子查詢也可以用於為選擇結果提供不同結果。通常,如果要查找的基本信息與被查找的其他數據不同步,則會發生這種情況(例如,在一個欄位上執行聚集操作,但不希望它成為影響其他返回結果的欄位)。
處理NULL值數據
實際上有一些函式專門處理NULL值數據,其中特別有用的函式之一是ISNULL()函式。ISNULL()接受變數或者表達式並為此測試NULL值。如果該值確實為空,那么函式返回一些預先說明的值,如果原始值不為NULL,那么就返回原始值。

相關詞條

熱門詞條

聯絡我們