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

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

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

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

首先我們在Order表中,創(chuàng)建一個索引:

 

  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)就可以了。

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

方法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函數(shù)也是在SQL Server 2005后新增的,使用這個和方法3查不多,甚至比3更好,但要注意一點是先按EmployeeID分區(qū),然后再排序。

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

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

【編輯推薦】

  1. SQL Server 2008數(shù)據(jù)庫學習筆記
  2. SQL Server 2005數(shù)據(jù)庫nolock使用詳解
  3. SQL Server如何啟用Ad Hoc Distributed Queries?
  4. SQL Server 2008用存儲過程實現(xiàn)插入更新數(shù)據(jù)的實例
  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

動態(tài)sql語句

2013-10-18 17:24:17

2018-12-25 14:40:04

SQL ServerSQL語句數(shù)據(jù)庫

2010-09-28 14:06:43

Sql Server表

2010-09-06 13:34:37

Sql Server語句

2010-10-21 12:16:11

SQL Server查

2010-11-11 11:13:54

SQL Server

2010-11-04 11:52:04

DB2分類取前N個記錄

2022-01-05 22:39:35

SQL單用戶模式

2010-10-20 10:04:36

sql server自

2010-09-13 17:11:42

sql server

2010-09-07 11:33:04

SQL語句

2010-10-19 16:06:26

SQL Server索
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人精品在线 | 国产黄色免费网站 | 国产激情综合五月久久 | 热99在线 | 亚洲狠狠爱| www.4虎影院 国产999精品久久久影片官网 | 免费观看的黄色网址 | 国产九九九九 | 欧美日韩1区2区 | 激情久久久久 | 日韩免费av| 羞羞视频免费观看入口 | 国产男女视频网站 | 91观看| 国产精品欧美一区二区三区 | 男人天堂999 | www.久久.com | 在线亚洲电影 | 在线区| 992tv人人草| 国产精品观看 | 国产99久久久国产精品 | 国产精品特级毛片一区二区三区 | 黄色一级片在线播放 | 久热精品在线播放 | 欧美一级二级三级视频 | 国产高清自拍视频在线观看 | 日本一区二区三区四区 | 午夜视频在线免费观看 | 亚洲97 | 欧美一级观看 | 久草久 | 日韩欧美国产成人一区二区 | 日韩波多野结衣 | 国产精品一区在线播放 | 99综合网 | 亚洲一区二区三区在线观看免费 | 欧美二区三区 | 久久久久久色 | 成人国产在线观看 | 精品免费国产一区二区三区四区 |