国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

使用SQL Server數據庫嵌套子查詢的方法

2024-08-31 01:00:12
字體:
來源:轉載
供稿:網友
很多SQL Server程序員對子查詢(subqueries)的使用感到困惑,尤其對于嵌套子查詢(即子查詢中包含一個子查詢)。現在,就讓我們追本溯源地探究這個問題。 
有兩種子查詢類型:標準和相關。標準子查詢執行一次,結果反饋給父查詢。相關子查詢每行執行一次,由父查詢找回。在本文中,我將重點討論嵌套子查詢(nested subqueries)(我將在以后介紹相關子查詢)。 
試想這個問題:你想生成一個賣平墊圈的銷售人員列表。你需要的數據分散在四個表格中:人員.聯系方式(Person.Contact),人力資源.員工(HumanResources.Employee),銷售.銷售訂單標題(Sales.SalesOrderHeader),銷售.銷售訂單詳情(Sales.SalesOrderDetail)。在SQL Server中,你從內壓式(outside-in)寫程序,但從外壓式(inside-out)開始考慮非常有幫助,即可以一次解決需要的一個語句。 
如果從內到外寫起,可以檢查Sales.SalesOrderDetail表格,在LIKE語句中匹配產品數(ProductNumber)值。你將這些行與Sales.SalesOrderHeader表格連接,從中可以獲得銷售人員IDs(SalesPersonIDs)。然后使用SalesPersonID連接SalesPersonID表格。最后,使用ContactID連接Person.Contact表格。 

復制代碼 代碼如下:


USE AdventureWorks ; 
GO 
SELECT DISTINCT c.LastName, c.FirstName  
FROM Person.Contact c JOIN HumanResources.Employee e 
ON e.ContactID = c.ContactID WHERE EmployeeID IN  
(SELECT SalesPersonID  
FROM Sales.SalesOrderHeader 
WHERE SalesOrderID IN  
(SELECT SalesOrderID  
FROM Sales.SalesOrderDetail 
WHERE ProductID IN  
(SELECT ProductID  
FROM Production.Product p  
WHERE ProductNumber LIKE'FW%'))); 
GO 


這個例子揭示了有關SQL Server的幾個絕妙事情。你可以發現,可以用IN()參數替代SELECT 語句。在本例中,有兩次應用,因此創建了一個嵌套子查詢。 
我是標準化(normalization)的發燒友,盡管我不接受其荒謬的長度。由于標準化具有各種查詢而增加了復雜性。在這些情況下子查詢就顯得非常有用,嵌套子查詢甚至更加有用。 
當你需要的問題分散于很多表格中時,你必須再次將它們拼在一起,這時你可能發現嵌套子程序就很有用。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大理市| 蒲城县| 陆河县| 丹阳市| 泸溪县| 安龙县| 巩义市| 开原市| 文昌市| 阿合奇县| 松滋市| 东乡县| 吉水县| 黑水县| 平远县| 调兵山市| 米林县| 新源县| 惠来县| 通州市| 元朗区| 闻喜县| 广汉市| 通河县| 舞阳县| 井研县| 合山市| 留坝县| 武清区| 巴彦县| 达拉特旗| 尉氏县| 临猗县| 措美县| 钟山县| 集贤县| 广河县| 齐齐哈尔市| 松溪县| 桑日县| 南华县|