2012-02-14 4 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

+0

А гениальный! Вам не нужно заранее объявлять переменную или что-то в этом роде? –

+0

@ Jakobud: Нет, это не обязательно. Вы можете инициализировать его в том же запросе. ;) –

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'? Если нет, зачем это нужно? –

+4

@smhnaji: 'AS' является необязательным при указании того, что для' SELECT' или какой таблицы выбрать 'FROM':' SELECT t.num number FROM table t' является допустимым запросом. –

Смежные вопросы