2012-02-14 58 views
2

首先,我不問在結果返回給你之後如何獲得當前行號。MySQL - 記錄集中的行號?

我想知道,是否可以將行號作爲MySQL結果中返回的列之一?我想要做的是添加一個數字,以增加每一行。就像這樣:

| id | myNum | name | 
+----+-------+------+ 
| 34 |  1 | John | 
| 24 |  2 | Alex | 
| 56 |  3 | Brad | 
etc... 

我猜它會涉及存儲過程,但我不知道是否有可能沒有他們...

回答

11
select table.*,@rn:[email protected]+1 as row_num 
from table,(select @rn:=0) as r order by field_you_like 
+2

+1打我給它。 – xbrady 2012-02-14 23:22:48

+0

啊輝煌!你不必提前聲明變量或類似的東西? – 2012-02-14 23:26:06

+0

@Jakobud:不,這不是必要的。你可以在同一個查詢中初始化它。 ;) – 2012-02-14 23:31:13

2
select @n := @n + 1 mynum, t.* 
from (select @n:=0) initvars, tbl t 
+0

你的意思是'select @n:= @n + 1 AS mynum'而不是'select @n:= @n + 1 mynum'沒有'AS'嗎?如果沒有,爲什麼要這樣工作? – 2012-02-27 13:41:15

+4

@smhnaji:在指定什麼是「SELECT」或什麼表選擇「FROM」時,「AS」是可選的:'SELECT t.num number FROM table t'是一個有效的查詢。 – 2012-03-01 23:07:57