成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server獲得用戶最新或前n條訂單的SQL語句總結

數據庫 SQL Server
本文我們以實例的形式介紹了SQL Server獲得用戶最新或前n條訂單的幾種SQL語句,并對這幾種方法的效率進行了分析,希望能夠對您有所幫助。

SQL Server獲得用戶***或獲取前n條訂單SQL語句的幾種方法是本文我們主要要介紹的內容,首先我們先看以下的場景:有一張用戶表,一個訂單表,要求獲得一個用戶對應的***的一條訂單信息。實現以上要求,我們可以用以下幾種方式,但是效率卻相差很遠。

首先我們在Order表中,創建一個索引:

 

  1. CREATE UNIQUE INDEX idx_eid_odD_oidD ON Orders(EmployeeID,OrderDate DESC,OrderID DESC) 

 

多個OrderId是為了在OrderData相同的情況下,按訂單號倒序,是個輔助屬性。

方法1:

 

  1. SELECT EmployeeID,OrderID FROM Orders AS O1  
  2. WHERE OrderID = (  
  3.     SELECT ***)OrderID FROM Orders AS O2  
  4.     WHERE O1.EmployeeID = O2.EmployeeID  
  5.     ORDER BY OrderDate DESC ,OrderID DESC  

 

如果想獲得前n條訂單信息,把 = 號改成IN,然后TOP(n)就可以了。

不論是取一條還是多條,即使有索引,數據多的情況下,也是最慢的。

方法2:

 

  1. SELECT O.EmployeeID,O.OrderID FROM (  
  2.     SELECT EmployeeID,(SELECT ***)OrderID FROM Orders AS O2   
  3. WHERE E.EmployeeID = O2.EmployeeID   
  4. ORDER BY OrderDate DESC,OrderID DESC) AS OrderID   
  5.     FROM Employees AS E  
  6. ) AS EO   
  7. INNER JOIN Orders AS O  
  8. ON EO.OrderID = O.OrderID  

 

方法2只能取一條信息,不能取多條信息。

在取一條的情況下,這個要比方法1快多了,因為用戶相比訂單信息要少很多。

方法3:

 

  1. SELECT E.EmployeeID,O.OrderID FROM Employees AS E  
  2. CROSS APPLY (  
  3.     SELECT ***)* FROM Orders AS O1 WHERE E.EmployeeID = O1.EmployeeID ORDER BY O1.OrderDate DESC,O1.OrderID DESC  
  4. ) AS O 

 

這個應用到了SQL Server 2005或更高版本的一些新特性,這個效率要比方法2還好。

如果想取得多條,只需更改TOP(n)即可。

方法4:

 

  1. SELECT O1.EmployeeID,O1.OrderID   
  2. FROM Orders O1 JOIN (  
  3.     SELECT ROW_NUMBER() OVER(PARTITION BY EmployeeID ORDER BY OrderDate DESC,OrderID DESC) AS RowNumber,*   
  4.     FROM Orders AS OT  
  5. ) AS O2  
  6. ON O1.OrderID = O2.OrderID  
  7. WHERE O2.RowNumber = 1 

 

這個ROW_NUMBER函數也是在SQL Server 2005后新增的,使用這個和方法3查不多,甚至比3更好,但要注意一點是先按EmployeeID分區,然后再排序。

結合以上方法, 建議用方法3。

關于SQL Server獲得用戶***或前n條訂單的SQL語句的知識的總結就介紹到這里了,希望本次的介紹能夠對您有所收獲!

【編輯推薦】

  1. SQL Server 2008數據庫學習筆記
  2. SQL Server 2005數據庫nolock使用詳解
  3. SQL Server如何啟用Ad Hoc Distributed Queries?
  4. SQL Server 2008用存儲過程實現插入更新數據的實例
  5. 含有GROUP BY子句的查詢中如何顯示COUNT()為0的結果
責任編輯:趙鵬 來源: 博客園
相關推薦

2010-07-08 13:32:22

SQL Server

2010-10-21 11:24:02

SQL Server查

2010-09-26 15:15:11

SQL語句

2010-11-09 14:35:48

SQL Server查

2010-07-08 13:26:02

SQL Server

2010-09-06 09:53:41

SQL Server語句

2011-03-22 16:54:58

SQL語句

2010-11-12 13:08:36

動態sql語句

2013-10-18 17:24:17

2022-01-05 22:39:35

SQL單用戶模式

2010-10-21 12:16:11

SQL Server查

2010-11-11 11:13:54

SQL Server

2010-11-04 11:52:04

DB2分類取前N個記錄

2018-12-25 14:40:04

SQL ServerSQL語句數據庫

2010-09-28 14:06:43

Sql Server表

2010-09-06 13:34:37

Sql Server語句

2010-09-07 11:33:04

SQL語句

2010-10-20 10:04:36

sql server自

2010-09-06 09:36:51

SQL語句

2022-09-12 22:04:08

SQL Server數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 波多野结衣中文视频 | 毛片毛片毛片毛片 | 久久精品免费一区二区三 | 久久九| 中文在线一区二区 | 国产免费一区二区三区免费视频 | 久久一区二区三区四区五区 | 操久久| 九一视频在线观看 | 久久精品免费一区二区三 | 亚洲精品免费视频 | japanhdxxxx裸体| 国产精品美女在线观看 | 国产精品二区三区在线观看 | 国外成人免费视频 | 免费在线色 | 国产精品成人一区 | 亚洲一页 | 日韩中文一区二区三区 | 高清国产午夜精品久久久久久 | 97影院2| 国产玖玖 | 亚洲精品自拍 | 久久国产精品精品国产色婷婷 | 日本一区二区三区四区 | 午夜影院污 | 操皮视频 | 欧美自拍网站 | 亚洲成人精品国产 | 久久久成人一区二区免费影院 | 成人在线观看免费视频 | 国产在线一区二 | 91传媒在线观看 | 亚洲二区在线 | 成人免费观看视频 | 久久久久久九九九九 | 99精品欧美一区二区蜜桃免费 | 老妇激情毛片免费 | 日韩有码一区 | 亚洲精品一区二区在线观看 | 精品国产青草久久久久96 |