2011-01-17 3 views
1

Я хочу знать порядковое (?) Положение записи, которая возвращается в запросе.MySQL: получить номер позиции записи из запроса

Общий ответ в Интернете заключается в следующем:

SET @row=0; 
SELECT (@row:[email protected]+1) AS row, ename, empno FROM emp ORDER BY empno; 
+-----+--------+-------+ 
| row | ename | empno | 
+-----+--------+-------+ 
| 1 | SMITH | 7369 | 
| 2 | ALLEN | 7499 | 
| 3 | WARD | 7521 | 
| 4 | JONES | 7566 | 
| 5 | MARTIN | 7654 | 
| 6 | BLAKE | 7698 | 
| 7 | CLARK | 7782 | 
| 8 | SCOTT | 7788 | 
| 9 | KING | 7839 | 
| 10 | TURNER | 7844 | 
| 11 | ADAMS | 7876 | 
| 12 | JAMES | 7900 | 
| 13 | FORD | 7902 | 
| 14 | MILLER | 7934 | 
+-----+--------+-------+ 

Но это не работает для меня. Список упорядочен правильно, используя ORDER BY, но столбец строк находится в случайном порядке, а не является последовательным.

Надеясь, что кто-то будет знать ответ на этот вопрос, а не советуя мне, почему я не должен это делать (есть много технических причин, слишком много, чтобы идти в!)

ответ

1

решаемые себя: |

Создайте подзапрос, в котором перечислены все записи, затем запрос, выбирающий все эти записи, а также бит (row = row + 1), затем другой запрос, который выбирает все эти записи, и использует предложение WHERE для поиска вашей записи ,

Итак, у вас есть 3 вложенных запроса. Самый низкий выбирает все, средний добавляет информацию о строках, верхний - предложение WHERE.

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