MySQL實現row_number(一)

首發:MySQL實現row_numberhtml

在本教程中,咱們將在MySQL中實現一個很是實用的row_number功能。mysql

row_number是一個返回數據排序編號的排名方法,從1開始。咱們常常須要用到row_number去生成某些報表,不幸的是,MySQL並不像MSSQL,Oracle同樣支持這個方法。在MySQL中若是想實現這個功能須要臨時變量。sql

爲了在MySQL中實現row_number,須要在查詢中實用臨時變量,下圖中從employees表中查詢出5條數據,而且從1開始,爲每一行添加了編號(row number)。session

SET @row_number = 0;
 
SELECT 
    (@row_number:=@row_number + 1) AS num, firstName, lastName
FROM
    employees
LIMIT 5;

mysql-row_number-session-variables.jpg

在上面的查詢中:spa

首先,咱們定義了一個變量叫作row_number,初始值爲0,row_number是以@爲前綴的一個臨時變量。翻譯

而後,在查詢中,咱們爲這個變量每次+1,LIMIT分句是爲了限制返回的結果數,此處設爲5.code

另外一個方法是使用臨時變量做爲派生表,聯合主表。看下邊的查詢語句:htm

SELECT 
    (@row_number:=@row_number + 1) AS num, firstName, lastName
FROM
    employees,(SELECT @row_number:=0) AS t
LIMIT 5;

須要注意,派生表必須使用別名,以使查詢語句在語法上沒有問題。blog

因爲時間關係(回家過年),暫時到這裏,文中部份內容可能翻譯的有點不太順,能夠直接看下原文,原文中還有一部分講分組查詢中實用row_number。排序

這個以後再寫。

原文地址:MySQL row_number, This Is How You Emulate It

相關文章
相關標籤/搜索