MySQL:从查询中获取记录位置编号

时间:2011-01-17 15:32:29

标签: mysql

我想知道查询中返回的记录的序号(?)位置。

互联网上的一般答案是:

SET @row=0;
SELECT (@row:=@row+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 个答案:

答案 0 :(得分:1)

解决了自己:|

创建一个列出所有记录的子查询,然后选择所有这些记录的查询,以及(row = row + 1)位,然后选择所有这些记录的另一个查询,并使用WHERE子句查找记录。

所以你有3个嵌套查询。最低的一个选择全部,中间一个添加行信息,顶部一个添加WHERE子句。