2011-01-17 14 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つのネストされたクエリがあります。最も低いものがすべてを選択し、中間のものが行情報を追加し、1つ目がWHERE句を追加します。

関連する問題