2011-01-17 5 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 절을 추가합니다.

관련 문제