mysql中rownumber用法如下:
該函數用于返回其分區內每一行的序列號。它是一種窗口函數。行號從1開始到分區中存在的行數。該函數語法為:ROW_NUMBER() OVER (<partition_definition> <order_definition>) 。其中partition_definition語法如下:PARTITION BY <expression>,[{,<expression>}...]
PARTITION BY子句將行分成更小的集合。表達式可以是將在GROUP BY子句中使用的任何有效表達式。您可以使用以逗號分隔的多個表達式。
PARTITION BY條款是可選項。如果省略它,則整個結果集被視為分區。但是,當您使用PARTITION BY子句時,每個分區也可以被視為一個窗口。
order_definition語法如下所示:
ORDER BY <expression> [ASC|DESC],[{,<expression>}...]
ORDER BY子句的目的是設置行的順序。此ORDER BY子句獨立ORDER BY于查詢的子句。
具體用法有以下三種情況:
1.使用row_number()函數進行編號,如:
select email,customerID, ROW_NUMBER() over(order by psd) as rows from QT_Customer
原理:先按psd進行排序,排序完后,給每條數據進行編號。
2.在訂單中按價格的升序進行排序,并給每條記錄進行排序代碼如下:
select DID,customerID,totalPrice,ROW_NUMBER() over(order by totalPrice) as rows from OP_Order
3.統計出每一個各戶的所有訂單并按每一個客戶下的訂單的金額 升序排序,同時給每一個客戶的訂單進行編號。這樣就知道每個客戶下幾單了。